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日

悬赏问题

  • ¥30 使用XPath爬取模拟图书馆网站的数据
  • ¥50 基于TwinCAT3实现力传感器的实时读取
  • ¥20 python求解八元一次不定方程,无数解中随机输出几组即可(相关搜索:用python)
  • ¥50 libreoffice导出PPTX到PDF中的错误换行问题
  • ¥15 python实现网页视频下载
  • ¥15 如何通过深度图获得物体的完整、正确点云?
  • ¥15 有没有操作系统适用白丁的经典的书籍,如何解决?(标签-学习)
  • ¥15 Catia V5 R20 64位 安装过程中选择orbix配置创建套接字失败
  • ¥100 C51单片机设计交通灯时出现的问题
  • ¥15 R语言爬虫的时候元素和园代码不一样怎么解决呀