2

この質問はこれに似ていると思いますが、画像を投稿しようとしているので、私の場合は別のケースだと思います。

Androidアクティビティからサーバーに画像をアップロードしていますが、一部のデバイスにアップロードすると、「411-長さが必要です」というエラーレポートが表示されます。ここでエラーを再現することはできませんが、ユーザーから、別の国でテストできたデバイスとは別のデバイスでこのエラーが報告されました。

いくつかのパラメータが付加されたURLでHttpUrlConnectionを開きます。これらは文字列とUUIDです。次のようになります。

http://ourdomainname.net/OurMobileServices/ImageUploadhandler.ashx?filename=image20121220_120734_-901992324.jpeg&username=testusername&note=&uploadid=b4a1c35b-b869-4f7e-a645-6a4a180f0985&taskid=7f02deb8-c078-45c4-bc37-99e418e8cdf9

次に、getOutputStreamを使用してOutputStreamを取得し、そこに画像ファイルのバイトを書き込みます。

411エラーに関する情報を探していて、HttpUrlConnectionオブジェクトのコンテンツの長さを設定しています。次のように、コンテンツの長さをリクエストプロパティとして設定できるようです。

connection.setRequestProperty("Content-Length", String.valueOf(<mycomputedInt>));

または私は使用することができます:

connection.setFixedLengthStreamingMode() 

そこにコンテンツの長さの番号があります。

私の質問は:コンテンツの長さは何を測定する必要がありますか?それは参照していますか:

a)パラメータを含むURL全体?

b)URLエンコードされたパラメータ?

c)アップロードする画像のバイト配列の長さは?

d)画像のバイト配列の長さ、およびURLエンコードされたパラメータ?

e)完全に何か他のもの?

必要に応じてコードや詳細を投稿できます。これについてはかなり混乱しており、ローカルでエラーを再現することはできません。エミュレーター、携帯電話、タブレットから画像を問題なくアップロードできます。どんな助けでも大歓迎です、ありがとう。

4

1 に答える 1

2

Content-Length は、OutputStream に書き込んでいる長さでなければなりません。したがって、この場合の答えは C です。

このサイトは HTTP リクエストの構造を非常に明確に説明していると思います。参考になるかもしれません。

于 2012-12-20T12:46:13.777 に答える