Apache客户端HTTP响应处理状态码HTTP 100



我使用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

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

下面是来自w3的响应100的定义,下面是响应的一个很好的示例。引用:

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

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

根据Apache HttpClient代码,您不必做任何事情,因为客户端忽略所有1XX响应代码并继续寻找最终响应。这是HttpMethodBase类中的commons-httpclient-3.1:

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

如果你没有看到这种行为,那么也许你需要增加你的客户端超时?也许等待的时间还不够长?

相关内容

最新更新