use*_*224 2 java http apache-commons-httpclient
我正在使用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=*
Run Code Online (Sandbox Code Playgroud)
我通过http客户端代码调试并看到请求行设置为HTTP/1.1但在服务器上我看到请求是HTTP/0.9.
我尝试使用明确设置HTTP版本,HttpMethodParams但这没有帮助.有谁知道什么可能是错的?
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();
Run Code Online (Sandbox Code Playgroud)
谢谢Joachim Sauer.我能够找出问题所在.
我使用Webscarab作为Web代理,它发出以下消息"有一个延续标题,但没有以前的标题行".在线查看,发现问题出在多线请求线上.我明确地将HTTP版本设置为1.1,但是在url中有一个尾随的'\ r \n',它使得请求行看起来像Http/0.9.
Http/0.9和Http/1.0或其他更高协议之间的区别在于0.9有一个简单的请求线'METHOD URL'.更高版本还在请求行'METHOD URL HTTPVERSION'中包含Http版本.
希望能节省一天的时间!
| 归档时间: |
|
| 查看次数: |
1932 次 |
| 最近记录: |