マルチパートとストリームを使用してライブ サーバー (WCF サービス) に画像ファイルをアップロードしています。実際のカメラを使用する場合、画像サイズは 500 ~ 700KB です。エミュレーターからはサンプルを正常にアップロードできますが、Sony Ericsson Arc S にインストールすると、アプリケーションは画像をアップロードしません。ステータスコードを確認するためのコードがありますが、何も起こらず、エラーも例外もサーバーの応答もありません.私の電話では、モバイルデータ接続を使用しています(プロバイダーグラメン電話、GSM、バングラデシュ)。何が問題なのか理解できません。どんな体でも私を助けることができますか?
アンドロイドコード:
HttpPost httppost = new HttpPost(SERVICE_URI + "/uploadImage");
DefaultHttpClient httpclient = new DefaultHttpClient();
File dir = Environment.getExternalStorageDirectory();
File imageFile = new File(dir, getImagepath(directoryName, false));
if (imageFile.exists()) {
MainActivity.this.runOnUiThread(new Runnable() {
public void run() {
Toast.makeText(MainActivity.this, "File Exist", Toast.LENGTH_SHORT)
.show();
}
});
MultipartEntity entity = new MultipartEntity();
entity.addPart("image", new FileBody(imageFile, "image/jpeg"));
httppost.setEntity(entity);
HttpResponse response = httpclient.execute(httppost);
StatusLine statusLine = response.getStatusLine();
final int statusCode = statusLine.getStatusCode();
if (statusCode == 200) {
MainActivity.this.runOnUiThread(new Runnable() {
public void run() {
Toast.makeText(MainActivity.this, "Upload successful!", Toast.LENGTH_SHORT)
.show();
}
});
} else {
MainActivity.this.runOnUiThread(new Runnable() {
public void run() {
Toast.makeText(MainActivity.this, "File Upload Failed,status:"+statusCode, Toast.LENGTH_SHORT)
.show();
}
});
}
} else {
MainActivity.this.runOnUiThread(new Runnable() {
public void run() {
Toast.makeText(MainActivity.this, "File dont't exist", Toast.LENGTH_SHORT)
.show();
}
});
}
更新: ログ ファイルを生成する例外キャッチ ブロックにログ ライターを追加しました。どうしたの。
更新: ついに問題が発生しました!それはサーバー側の「マルチパート パーサー」であり、Android コードで間違った ServiceURi を使用していました。必要に応じてパーサーを選択するように注意する必要があります。パーサー ファイルにほとんど変更を加えませんでした。 、そしてそれはうまくいきます!しかし、他の多くのスタッフを組み込む必要があるため、パーサーを変更する必要があります.とにかく、あなたの努力に感謝します! 便利なリンク: http://www.ideatoappster.com/android-to-wcf-streaming-multi-part-binary-images/