12

安全なRESTfulWebサービスを介して曲(mp3 / wav)ファイルと一部のデータを送信することを想定しています。MultipartEntityを使用してHttpPostリクエストを作成しています。しかし、HttpClientを介して実行すると、サーバーはこのエラーを応答します

HTTPステータス400-不正なリクエストタイプ:ステータスレポートメッセージ:不正なリクエストクライアントから送信されたリクエストは構文的に正しくありませんでした(不正なリクエスト)。

しかし、Webインターフェースから呼び出すと、サービスは非常にうまく機能しています。助けてください

そのコード

HttpClient httpclient = new DefaultHttpClient();
HttpPost postRequest = new HttpPost();
        try {
            MultipartEntity reqEntity = new MultipartEntity();

            reqEntity.addPart("email", new StringBody("test@testmail.com"));
            reqEntity.addPart("password", new StringBody("123"));
            reqEntity.addPart("title", new StringBody("My new song"));
            reqEntity.addPart("musicData", new FileBody(new File(FilePath))); 

            // FIlePath is path to file and contains correct file location

            postRequest.setEntity(reqEntity);

            postRequest.setURI(new URI(ServiceURL));
            HttpResponse response = httpclient.execute(postRequest);

        } catch (URISyntaxException e) {
            Log.e("URISyntaxException", e.toString());
        } 

MultipartEntity用のapache-mime4j、httpclient、httpcore、およびhttpmimejarも含めました。

これは、サービスのHTMLページスナップです。 ここに画像の説明を入力してください

4

3 に答える 3

5

次のように、HttpPostオブジェクトを作成するときに、setURIメソッドを削除し、URLを渡してみてください。これは私のために働きました(詳細はこちら)。

HttpClient httpclient = new DefaultHttpClient();
HttpPost postRequest = new HttpPost(ServiceURL);
try {
    MultipartEntity reqEntity = new MultipartEntity();

    reqEntity.addPart("email", new StringBody("test@testmail.com"));
    reqEntity.addPart("password", new StringBody("123"));
    reqEntity.addPart("title", new StringBody("My new song"));
    reqEntity.addPart("musicData", new FileBody(new File(FilePath)));     
    postRequest.setEntity(reqEntity);

    HttpResponse response = httpclient.execute(postRequest);

} catch (URISyntaxException e) {
    Log.e("URISyntaxException", e.toString());
} 
于 2012-08-01T04:20:31.507 に答える
3

リクエストのヘッダーが正しくないようです。この問題は、別の認証プロトコルまたは大文字/小文字を使用した場合、またはサーバー側が処理できないヘッダーの内容が間違っている場合に発生する可能性があります。

于 2012-07-30T05:47:28.903 に答える
2

さまざまな組み合わせを試して時間を無駄にしないでください。HTTPで利用できるHTTPリクエストツールがいくつかあり、取得しているリクエストとレスポンスを追跡できます。HTTPアナライザーダウンロード試用版

作業中のウェブインターフェースからURLを呼び出し、リクエストとレスポンスをコピーしてから、プログラムから同じことを行います。ツールはリクエストとレスポンスのデータをキャプチャすることができます。

ここで、動作中のリクエストと動作していないリクエストを比較すると、ヘッダーの問題なのか、認証関連の問題なのか、問題を確実に掘り下げることができます。

于 2012-08-02T07:09:57.013 に答える