1. ホーム
  2. android

[解決済み] Android SDKでマルチパートリクエストを投稿する

2023-08-21 05:37:32

質問

比較的簡単だと思っていたことをやろうとしています。Android SDK を使用してサーバーに画像をアップロードします。多くのサンプル コードが見つかりました。

http://groups.google.com/group/android-developers/browse_thread/thread/f9e17bbaf50c5fc/46145fcacd450e48

http://linklens.blogspot.com/2009/06/android-multipart-upload.html

しかし、どちらも私には機能しません。私が遭遇し続ける混乱は、マルチパート リクエストを作成するために本当に必要なものは何かということです。マルチパートのリクエストに必要な 最もシンプルな Android でマルチパートのアップロード (画像付き) を行う最も簡単な方法は何ですか?

何かお手伝いやアドバイスがありましたら、ぜひお願いします。

どのように解決するのですか?

2014年4月29日に更新しました。

私の回答はもう古いので、あなたはむしろ次のような高レベルのライブラリを使用したいのだと思います。 レトロフィット .


このブログを元に、次のような解決策を考えました。 http://blog.tacticalnuclearstrike.com/2010/01/using-multipartentity-in-android-applications/

を取得するために、追加のライブラリをダウンロードする必要があります。 MultipartEntity を実行するために、追加のライブラリをダウンロードする必要があります!

1) httpcomponents-client-4.1.zip を以下からダウンロードします。 http://james.apache.org/download.cgi#Apache_Mime4J をダウンロードし、apache-mime4j-0.6.1.jarをプロジェクトに追加してください。

2) httpcomponents-client-4.1-bin.zipを以下からダウンロードします。 http://hc.apache.org/downloads.cgi をダウンロードし、httpclient-4.1.jar, httpcore-4.1.jar, httpmime-4.1.jar をプロジェクトに追加してください。

3) 以下のサンプルコードを使用します。

private DefaultHttpClient mHttpClient;


public ServerCommunication() {
    HttpParams params = new BasicHttpParams();
    params.setParameter(CoreProtocolPNames.PROTOCOL_VERSION, HttpVersion.HTTP_1_1);
    mHttpClient = new DefaultHttpClient(params);
}


public void uploadUserPhoto(File image) {

    try {

        HttpPost httppost = new HttpPost("some url");

        MultipartEntity multipartEntity = new MultipartEntity(HttpMultipartMode.BROWSER_COMPATIBLE);  
        multipartEntity.addPart("Title", new StringBody("Title"));
        multipartEntity.addPart("Nick", new StringBody("Nick"));
        multipartEntity.addPart("Email", new StringBody("Email"));
        multipartEntity.addPart("Description", new StringBody(Settings.SHARE.TEXT));
        multipartEntity.addPart("Image", new FileBody(image));
        httppost.setEntity(multipartEntity);

        mHttpClient.execute(httppost, new PhotoUploadResponseHandler());

    } catch (Exception e) {
        Log.e(ServerCommunication.class.getName(), e.getLocalizedMessage(), e);
    }
}

private class PhotoUploadResponseHandler implements ResponseHandler<Object> {

    @Override
    public Object handleResponse(HttpResponse response)
            throws ClientProtocolException, IOException {

        HttpEntity r_entity = response.getEntity();
        String responseString = EntityUtils.toString(r_entity);
        Log.d("UPLOAD", responseString);

        return null;
    }

}