我正在使用 Apache Commons HttpClient v3.1。我的所有请求在请求行中都有正确的(默认)HTTP 版本,即 HTTP/1.1,除了 1 个请求。
以下 Post 请求将 requestline 获取为 HTTP/0.9:
server : port/cas/v1/tickets/TGT-1-sUqenNbqUzvkGSWW25lcbaJc0OEcJ6wg5DOj3XDMSwoIBf6s7i-cas-1
Body: service=*
我通过 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();