为了账号安全,请及时绑定邮箱和手机立即绑定

我无法理解 http 请求的响应

我无法理解 http 请求的响应

收到一只叮咚 2022-09-22 19:36:02
为什么它给我一个405错误,尽管代码应该在逻辑上工作,链接有一个有效的下载,我从互联网上复制一些工作代码,看看发生了什么,如这个主题如何下载一个图像与Java socket HTTP / 1.1请求?它也没有给我一个响应200?很抱歉混乱的代码我试图找出问题大约2天//package htmlconnection;import java.io.BufferedInputStream;import java.io.BufferedOutputStream;import java.io.BufferedReader;import java.io.BufferedWriter;import java.io.ByteArrayOutputStream;import java.io.FileOutputStream;import java.io.IOException;import java.io.InputStream;import java.io.InputStreamReader;import java.io.OutputStream;import java.io.OutputStreamWriter;import java.io.PrintWriter;import java.net.MalformedURLException;import java.net.Socket;import java.net.URL;import java.net.UnknownHostException;import java.nio.charset.StandardCharsets;import javax.net.SocketFactory;import javax.net.ssl.HttpsURLConnection;import javax.net.ssl.SSLSocketFactory;public class MyClass {    public static void main(String args[])throws UnknownHostException, IOException {        try {            URL url =new URL("http://www.ncert.nic.in/NCERTS/l/jemh1an.pdf");            String path=url.getPath();            String domain=url.getHost();            System.out.println(path);            System.out.println(domain);            Socket socket = new Socket(domain,80);            PrintWriter out = new PrintWriter(new BufferedWriter(new OutputStreamWriter(socket.getOutputStream())));            System.out.println(socket.isConnected());            out.println("Get "+path+" HTTP/1.1\n" +"Host: "+domain);            out.println();            out.flush();            BufferedReader in = new BufferedReader(new InputStreamReader(socket.getInputStream()));            String inputLine;            while ((inputLine = in.readLine()) != null && inputLine.trim() != "0") {               System.out.println(inputLine);            }        } catch (MalformedURLException e) {            // TODO Auto-generated catch block            e.printStackTrace();        }    }}
查看完整描述

2 回答

?
莫回无

TA贡献1865条经验 获得超7个赞

GET 请求必须全部为大写字母。您可以看到您得到的是 405,这意味着此处不接受 HTTP 请求方法:

<title>405 - HTTP verb used to access this page is not allowed.</title>

更改此项:

            out.println("Get "+path+" HTTP/1.1\n" +"Host: "+domain);

对此:

            out.println("GET "+path+" HTTP/1.1\n" +"Host: "+domain);


查看完整回答
反对 回复 2022-09-22
?
四季花海

TA贡献1811条经验 获得超5个赞

HTTP 动词应该是区分大小写的。

下面是指向 HTTP/1.1 规范的链接。

使用“获取”而不是“获取”。


查看完整回答
反对 回复 2022-09-22
  • 2 回答
  • 0 关注
  • 113 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信