我正在使用Apache Commons HttpClient 3.1,我发现来自Sun的HttpURLConnection从流中删除了100个Continued。

因此,我似乎无法获得100继续,因为他们显然已被Sun的代码删除。

我无法前进到HttpClient 4.0,因为这需要对现有代码进行许多更改,因此解决方案必须是3.1或不冲突的东西。

有什么想法吗?

由于

有帮助吗?

解决方案

我找到了解决方案!

覆盖processStatusLine并检查状态为100.

请记住,前100个是预期的(服务器告诉我我可以继续POST),在我的情况下,我可以放心地忽略那个。这样我就可以获得服务器响应的所有信息。

public class Counting100PostMethod extends PostMethod {
Logger log = Logger.getLogger(Counting100PostMethod.class);
boolean first100 = true;

public Counting100PostMethod() {
    super();
}

public Counting100PostMethod(String s) {
    super(s);
}

@Override
protected void processStatusLine(HttpState httpState, HttpConnection httpConnection) {
    super.processStatusLine(httpState, httpConnection);
    int status = getStatusCode();
    if (status == 100) {
        if (first100) {
            first100 = false;
        } else {
            // can now increment counter
            log.debug("Increment counter");
        }
    }
}

其他提示

似乎此行为是预期的并且被此问题拒绝: http :?//bugs.sun.com/bugdatabase/view_bug.do bug_id = 4396798

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top