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日

悬赏问题

  • ¥35 平滑拟合曲线该如何生成
  • ¥100 c语言,请帮蒟蒻写一个题的范例作参考
  • ¥15 名为“Product”的列已属于此 DataTable
  • ¥15 安卓adb backup备份应用数据失败
  • ¥15 eclipse运行项目时遇到的问题
  • ¥15 关于#c##的问题:最近需要用CAT工具Trados进行一些开发
  • ¥15 南大pa1 小游戏没有界面,并且报了如下错误,尝试过换显卡驱动,但是好像不行
  • ¥15 自己瞎改改,结果现在又运行不了了
  • ¥15 链式存储应该如何解决
  • ¥15 没有证书,nginx怎么反向代理到只能接受https的公网网站