0

addField メソッドを使用してマルチパート HTTP POST にフィールドを追加しようとしていますが、WireShark でパケットをキャッチすると、その効果がわかりません。何が問題なのですか?

private void upload3(File file) {
        DefaultHttpClient httpclient = new DefaultHttpClient();
        HttpPost httpPost = new HttpPost(url + "?recname=" + fileName);
        MultipartEntity entity = new MultipartEntity();

        String boundary = "---------------------------This is the boundary";

        httpPost.addHeader("Content-Type", "multipart/form-data; boundary="
                + boundary);


        try {
            File f = new File(  file_path);

            FileBody body = new FileBody(f);
            FormBodyPart fbp = new FormBodyPart( "file", body );
            fbp.addField("Content-Type", "audio/mp4");

            entity.addPart(fbp);


        } catch (Exception e) {
            e.printStackTrace();
        }

        httpPost.setEntity(entity);
        }
4

1 に答える 1

2

わかりました、私は答えを見つけました。問題は、新しい MultipartEntity を作成すると、ランダムな境界が生成されるのに、サーバーが自分の境界を待っていたことです。したがって、MultipartEntity コンストラクターを次のように変更する必要がありました。

String boundary = "---------------------------Yout own boundary";
MultipartEntity entity = new MultipartEntity(HttpMultipartMode.BROWSER_COMPATIBLE, boundary, null);
于 2013-07-25T15:11:37.393 に答える