apache客户端http响应处理状态码http 100

时间:2011-08-30 20:13:18

标签: java httpclient

我使用apache httpdefault客户端并执行post函数,如下所示

HttpResponse imToken = httpClient.execute(httpPostIM);

获得的回复是

HTTP/1.1 100 Continue
Connection: keep-alive

接下来是:

HTTP/1.1 200 OK
Date: Tue, 30 Aug 2011 19:11:35 GMT

我们如何从客户端处理这个问题?

1 个答案:

答案 0 :(得分:3)

以下是response 100 from w3的定义,这是what the response looks like的一个很好的示例。引用:

  

客户端应该继续提出请求。该临时响应用于通知客户端已经接收到请求的初始部分并且尚未被服务器拒绝。客户端应该继续发送请求的剩余部分,或者如果请求已经完成,则忽略此响应。服务器必须在请求完成后发送最终响应。有关此状态代码的使用和处理的详细讨论,请参阅第8.2.3节。

因此,如果您的客户已经发送了整个请求,那么它应该等待服务器,直到它提供200或其他“最终”响应。

根据Apache HttpClient代码,您无需执行任何操作,因为客户端会忽略所有1XX响应代码并继续寻找最终响应。这来自班级commons-httpclient-3.1中的HttpMethodBase

if ((status >= 100) && (status < 200)) {
    if (LOG.isInfoEnabled()) {
        LOG.info("Discarding unexpected response: " +
            this.statusLine.toString()); 
    }
    this.statusLine = null;
}

如果您没有看到此行为,那么您可能需要增加客户端超时?也许它没有等待足够长的时间?