gpt4 book ai didi

java - 这是有效的 HTTP get 请求吗?

转载 作者:可可西里 更新时间:2023-11-01 16:24:29 26 4
gpt4 key购买 nike

我正在与一个向我们的应用程序发送 HTTP-GET 请求的系统集成。使用 Jetty,只需几分钟就可以将一些东西组合在一起。

我用 curl 测试了它(在请求中进行了必要的转义),一切都很顺利。我按要求收到回复:

$ curl http://localhost:9100?field1=value1\&field2=value2\&field3=value3

机器上的 TCP 转储显示请求通过:

GET /?field1=value1&field2=value2&field3=value3 HTTP/1.1
User-Agent: curl/7.19.7 (x86_64-redhat-linux-gnu) libcurl/7.19.7 NSS/3.13.1.0 zlib/1.2.3 libidn/1.18 libssh2/1.2.2
Host: xxx.xxx.xxx.xxx:9100
Accept: */*

然而,生活从来没有那么简单。当我部署它以便我们真正开始与真实系统集成时,我的代码中的处理程序甚至没有被调用。 Jetty 立即响应“HTTP/1.1 400 Bad Request”。 TCP 转储显示以下内容:

GET ?field1=value1&field2=value2&field3=value3 HTTP/1.1

就是这样...没有标题信息,只有上面的信息。

我现在的问题是上面的请求是否真的有效。是否需要斜线?是否有任何标题条目是强制性的?

有什么想法吗?这是否意味着我必须重新设计轮子才能使其正常工作?


编辑:

我尝试使用 telnet 连接。在某些网络服务器的 GET 请求之后,似乎/确实是必需的。但是,它们之间的处理方式似乎有所不同。 Jetty 提示,谷歌运行的网络服务器提示......但是 Apache 是一个很好的例子。似乎不需要任何 header 信息。

最佳答案

RFC 2616提供所有杂项细节:

3.2.2

If the abs_path is not present in the URL, it MUST be given as "/" when used as a Request-URI for a resource (section 5.1.2).

14.23

A client MUST include a Host header field in all HTTP/1.1 request messages .

关于java - 这是有效的 HTTP get 请求吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12088607/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com