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 metadata提取的PDF元数据,如何转换为一个Excel
  • ¥15 关于arduino编程toCharArray()函数的使用
  • ¥100 vc++混合CEF采用CLR方式编译报错
  • ¥15 coze 的插件输入飞书多维表格 app_token 后一直显示错误,如何解决?
  • ¥15 vite+vue3+plyr播放本地public文件夹下视频无法加载
  • ¥15 c#逐行读取txt文本,但是每一行里面数据之间空格数量不同
  • ¥50 如何openEuler 22.03上安装配置drbd
  • ¥20 ING91680C BLE5.3 芯片怎么实现串口收发数据
  • ¥15 无线连接树莓派,无法执行update,如何解决?(相关搜索:软件下载)
  • ¥15 Windows11, backspace, enter, space键失灵