そこで、setRequestProperty を使用して Byte-Range リクエストを URL に送信しました。しかし問題は、最初に getContentLength を使用してサイズを取得したいことです。ただし、コンパイラは、長さを要求した後、その URl に既に接続されていると不平を言い、バイト範囲を設定できなくなりました。エラーをスローせずに、この特定の順序でこれを行う方法はありますか? 私は行こうとしました: getContentLength() -> connection.disconnect() -> setRequestProperty() ->connection.connect()。しかし、それもうまくいきませんでした。切断して再度接続した後、データをまったく受信しませんでした。
1 に答える
0
HttpURLConnection は、サーバーに対して単一の要求を行うために使用され、後続の要求に再利用することはできません。getContentLength() はresponseの長さを返すため、それが返されるまでにリクエストはすでに送信されているため、後でリクエストにヘッダーを追加することはできません。
2 つの HttpURLConnections を使用できます。最初のものはドキュメントの長さを要求し、2 つ目 (最初の要求から取得した長さに基づいて Range ヘッダーを設定します) は、実際のドキュメント範囲を取得します。に興味がある。
于 2013-08-07T21:41:43.767 に答える