1

私は Apache Commons HttpClient 3.1 を使用していますが、Sun の HttpURLConnection がストリームから 100 Continues をドロップすることがわかりました。

そのため、100 Continue は明らかに Sun のコードによって削除されているため、取得できないようです。

HttpClient 4.0 に進むことはできません。既存のコードに多くの変更を加える必要があるため、解決策は 3.1 または競合しないものでなければなりません。

何か案は?

ありがとう

4

2 に答える 2

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");
        }
    }
}
于 2009-09-17T12:43:19.867 に答える
0

この動作は予期されていたようで、次の問題によって拒否されました: http://bugs.sun.com/bugdatabase/view_bug.do?bug_id=4396798

于 2009-09-14T19:42:33.363 に答える