1

こんばんは。

このような投稿依頼があります

-----------------------------17911109517875 Content-Disposition: form-data;
name="PERSON*1[F*2][2664]" value1 
-----------------------------17911109517875 Content-Disposition: form-data; 
name="PERSON*1[I*3][2776]" value2 
-----------------------------17911109517875 Content-Disposition: form-data;  
name="PERSON*1[O*4][2778]" value3

そして、HttpClient経由でAndroidデバイスから送信しようとしています。

public String doMultipartPost(String url, List<NameValuePair> urlParameters) {

    HttpContext localContext = new BasicHttpContext();
    localContext.setAttribute(ClientContext.COOKIE_STORE, cookieStore);

    HttpPost request = new HttpPost(url);
    HttpProtocolParams.setUserAgent(client.getParams(), "My funcy UA");

    MultipartEntity entity = new 
            MultipartEntity(HttpMultipartMode.BROWSER_COMPATIBLE);

    for (NameValuePair nvp : urlParameters) {
        try {
            entity.addPart(nvp.getName(), new StringBody(nvp.getValue()));
        } catch (UnsupportedEncodingException e) {
            e.printStackTrace();
        }
    }

    request.setEntity(entity);

    try {
        HttpResponse response = client.execute(request, localContext);
    } catch (ClientProtocolException e) {
        e.printStackTrace();
    } catch (IOException e) {
        e.printStackTrace();
    }

    return "post";

}

しかし-----------------------------17911109517875 Content-Disposition: form-data; 、MultipartEntity によって自動的に設定されるか、コードのどこかに記述する必要がありますか? このコードは機能しません。

ありがとう。

4

1 に答える 1

0

個人的なプロジェクトで同様のコードを使用しています。This SO questionもいくつかのガイダンスを提供できます。

境界はライブラリによって自動的に設定されるため、HttpMultipartMode の構文によっては、それらを処理する必要はありません。デフォルトの STRICT モードを使用しました。

必要なライブラリを追加しましたか? それらは私のために働いた...

<dependency>
    <groupId>org.apache.httpcomponents</groupId>
    <artifactId>httpmime</artifactId>
    <version>4.2.3</version>
</dependency>
<dependency>
    <groupId>org.apache.james</groupId>
    <artifactId>apache-mime4j-core</artifactId>
    <version>0.7.2</version>
</dependency>

エラーに関する詳細情報を提供できますか: logcat のトレースまたはサーバーのログ?

于 2013-07-09T09:17:09.023 に答える