SLM715 2022-04-04 19:23 采纳率: 100%
浏览 34
已结题

JAVA socket通过GET请求访问https网页(豆瓣读书),没有响应包,怎么解决

问题遇到的现象和发生背景

JAVA socket通过GET请求访问https网页(豆瓣读书),没有响应包,怎么解决

问题相关代码,请勿粘贴截图
java
import javax.net.ssl.SSLSocketFactory;
import java.io.*;
import java.net.InetAddress;
import java.net.Socket;
import java.nio.charset.StandardCharsets;

public class HTTPClient {
    public static void main(String[] args) {
    // TODO Auto-generated method stub
        BufferedReader in = null;
        PrintWriter out = null;
        FileWriter fw = null;
        try {
            //                                                           www.book.douban.com
            Socket socket = SSLSocketFactory.getDefault().createSocket("140.143.177.206", 443);
            //Socket socket = new Socket("www.book.douban.com", 80);
            if (socket.isConnected()) {
                System.out.println(socket.getInetAddress());
                System.out.println("客户端已经连上");
                in = new BufferedReader(new InputStreamReader(socket.getInputStream(), StandardCharsets.UTF_8));
                out = new PrintWriter(new OutputStreamWriter(socket.getOutputStream(),StandardCharsets.UTF_8),true);
                out.write("GET / HTTP/1.1\r\n");
                out.write("Host: 140.143.177.206\r\n");
                out.write("Content-Type: text/html\r\n");
                //out.write("Accept-Language: zh-CN\r\n");
                //out.write("Cache-Control: max-age=0\r\n");
                //out.write("User-agent:Mozilla/5.0\r\n");
                out.write("Connection: keep-alive\r\n\r\n");
                //out.write("\r\n");
                out.flush();
                System.out.println("连接成功!");
                File file = new File("hello.html");
                fw = new FileWriter(file);
                String lineStr ;
                while ((lineStr = in.readLine()) != null) {

                    System.out.println(lineStr);
                    fw.write(lineStr);
                }
                System.out.println("连接成功!");
                }
            }catch(Exception e){
                e.printStackTrace();
            } finally{
                try {
                    if (out != null) {
                        try {
                            out.close();
                        } catch (Exception e) {
                            e.printStackTrace();
                        }
                    }
                    if (in != null) {
                        try {
                            in.close();
                        } catch (IOException e) {
                            e.printStackTrace();
                        }
                    }
                } catch (Exception e) {
                    e.printStackTrace();
                }
                if(fw != null)
                {
                    try{
                        fw.close();
                    }catch (IOException e){
                        e.printStackTrace();
                    }
                }
            }

        }
}
运行结果及报错内容

运行结果

java
/140.143.177.206
客户端已经连上
连接成功!
连接成功!
我的解答思路和尝试过的方法

是我的GET写错了吗?还是那个地方有问题,求指出,感谢,第一次学Java语言,大哭

我想要达到的结果

想要:https的响应头和响应体

  • 写回答

2条回答 默认 最新

  • 关注

    ssl加密通信,应该使用SSLSocket建立连接。

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(1条)

报告相同问题?

问题事件

  • 已结题 (查看结题原因) 4月5日
  • 已采纳回答 4月5日
  • 创建了问题 4月4日

悬赏问题

  • ¥15 MATLAB数据处理
  • ¥15 zigbee终端设备入网失败
  • ¥15 金融监管系统怎么对7+4机构进行监管的
  • ¥15 硬件IIC从模式的数据发送,中断数据的接收,不能用HAL库(按照时序图)
  • ¥20 QAxWidget上显示一个word文档后,如何直接在该QAxWidget上修改和保存word文档
  • ¥15 Simulink仿真报错,请问如何解决
  • ¥20 宝塔面板无法添加Node项目,一直处于正在添加脚本页面
  • ¥50 Dkeil5 CT107D单片机的程序编写
  • ¥30 Ubuntu20.04中PVN3D复现过程交叉编译问题
  • ¥60 不懂得怎么运行下载来的代码