Post multipart request with Android SDK

前端 未结 12 2042
余生分开走
余生分开走 2020-11-22 04:38

I\'m trying to do something I thought would be relatively simple: Upload an image to a server with the Android SDK. I\'m found a lot of example code:

http://groups.g

12条回答
  •  猫巷女王i
    2020-11-22 05:33

    Update April 29th 2014:

    My answer is kind of old by now and I guess you rather want to use some kind of high level library such as Retrofit.


    Based on this blog I came up with the following solution: http://blog.tacticalnuclearstrike.com/2010/01/using-multipartentity-in-android-applications/

    You will have to download additional libraries to get MultipartEntity running!

    1) Download httpcomponents-client-4.1.zip from http://james.apache.org/download.cgi#Apache_Mime4J and add apache-mime4j-0.6.1.jar to your project.

    2) Download httpcomponents-client-4.1-bin.zip from http://hc.apache.org/downloads.cgi and add httpclient-4.1.jar, httpcore-4.1.jar and httpmime-4.1.jar to your project.

    3) Use the example code below.

    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 {
    
        @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;
        }
    
    }
    
        

    提交回复
    热议问题