gpt4 book ai didi

java - 请求以 Http/0.9 版本发送

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

我正在使用 Apache Commons HttpClient v3.1。我所有的请求在请求行中都有正确的(默认)HTTP 版本,即 HTTP/1.1 除了 1 个请求。

以下 Post 请求获取请求行作为 HTTP/0.9:

server : port/cas/v1/tickets/TGT-1-sUqenNbqUzvkGSWW25lcbaJc0OEcJ6wg5DOj3XDMSwoIBf6s7i-cas-1
Body: service=*

我调试了 http 客户端代码,看到请求行设置为 HTTP/1.1,但在服务器上我看到请求是 HTTP/0.9。

我尝试使用 HttpMethodParams 显式设置 HTTP 版本,但这没有帮助。有谁知道哪里出了问题?

    HttpClient client = new HttpClient();
HostConfiguration hc = client.getHostConfiguration();
hc.setHost(new URI(url, false));

PostMethod method = new PostMethod();
method.setURI(new URI(url, false));

method.getParams().setUriCharset("UTF-8");
method.getParams().setHttpElementCharset("UTF-8");
method.getParams().setContentCharset("UTF-8");
method.getParams().setVersion(HttpVersion.HTTP_1_1);
method.addParameter("service", URLEncoder.encode(service, "UTF-8"));
method.setPath(contextPath + "/tickets/" + tgt);

String respBody = null;
int statusCode = client.executeMethod(method);
respBody = method.getResponseBodyAsString();

最佳答案

感谢约阿希姆绍尔。我能够找出问题所在。

我正在使用 Webscarab 作为 Web 代理,它发出了以下消息“获得了延续 header 但没有先前的 header 行”。上网查了一下,发现问题出在多行请求行。我明确地将 HTTP 版本设置为 1.1,但是 url 中有一个尾随的“\r\n”,这使得请求行看起来像 Http/0.9。

Http/0.9 和 Http/1.0 或其他更高协议(protocol)之间的区别在于 0.9 有一个简单的请求行“METHOD URL”。以后的版本还在请求行 'METHOD URL HTTPVERSION' 中包含了 Http 版本。

希望它可以节省一些人的时间!

关于java - 请求以 Http/0.9 版本发送,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13133346/

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