2011-12-23 16 views
1

WCF restサービスを使用してbyte arrrayファイルを送信する必要があります。私はアンドロイドでHttpPostメソッドを使用してデータを送信する必要があります。私が使用しているコードは、HTTP/1.1 400 Bad Requestエラーとしてステータスを返します。ByteArrayからWCF RESTサービスへのAndroidアップロードファイル

private final static String URI = "http://192.168.1.15/QueryService/Import/Test"; 
     final HttpPost request = new HttpPost(URI); 
      final HttpClient httpClient = new DefaultHttpClient(); 
      final ByteArrayEntity entity = new ByteArrayEntity(fileToBytes(pathToOurFile)); 
      entity.setContentType("application/octet-stream"); 
      entity.setChunked(true); 
      request.setEntity(entity); 
      final HttpResponse hr = httpClient.execute(request); 
      final StatusLine status = hr.getStatusLine(); 
     httpClient.getConnectionManager().shutdown(); 

答えて

1

あなたの要求に間違いがあるかどうかは分かりません。この種のエラーを解決する標準的な方法は次のとおりです。

  • サービスのWCFクライアントを作成します。期待どおりに動作することを確認します。
  • Fiddlerまたは他の適切なツールを使用して、クライアントが生成しているHTTP要求を代行受信します。ヘッダーと本体の両方が重要です。
  • Androidリクエストを変更して、WCFクライアントとまったく同じリクエストを生成します。
+0

私はFiddlerを使用していますが、私のアプリケーションで行われたHTTPリクエストは表示されません。私はまた、エミュレータプロキシをIPアドレスを詐欺師に変更しました。私はエミュレータを介して任意のウェブサイトを閲覧すると、それはフィドラーに表示されますが、それは私のアプリケーションのリクエストを表示しません。同じコードがStringEntityで動作しますが、Fiddlerのプロセスを表示しません。 – saini

+0

これはエミュレータの問題のように聞こえます。中間のクライアントを使用すると、要求を簡単に傍受することができます。私は過去にこのために正常にhttp://code.google.com/p/tcpmon/を使用しました。 – kgiannakakis

+0

私はサービスにリクエストを送ることができますが、私が送信しているリクエストは、Webサービスで受け取らなければならない正しいフォーマットではないようです。また、私はマルチパートティティを通じてストリーム形式のデータを送信しようとしましたが、何も応答しません。 – saini

0

私もWCFサービスと同じ問題に直面していました。 400不正リクエストとは、メソッドに渡すリクエストパラメータ値がメソッドのパラメータと一致しないことを意味します。私はメソッドパラメータとしてファイルを渡すためにBase64文字列エンコーディングを使用しました。それがあなたを助けてくれますか?

関連する問題