2016-05-23 2 views
-1

Ich versuche, eine Datei mit mehrteiligen Anfrage in okhttp hochladen. mit dem folgenden Code.wie Body-Parameter mit mehrteiligen Datei Upload-Anfrage senden in OKhttp

public static Boolean uploadFile(String serverURL, File file) { 
    try { 

     RequestBody requestBody = new MultipartBuilder() 
       .type(MultipartBuilder.FORM) 
       .addFormDataPart("file", file.getName(), 
        RequestBody.create(MediaType.parse("text/csv"), file)) 
       .addFormDataPart("some-field", "some-value") 
       .build(); 

     Request request = new Request.Builder() 
       .url(serverURL) 
       .post(requestBody) 
       .build(); 

     client.newCall(request).enqueue(new Callback() { 

      @Override 
      public void onFailure(Request request, IOException e) { 
       // Handle the error 
      } 

      @Override 
      public void onResponse(Response response) throws IOException { 
       if (!response.isSuccessful()) { 
        // Handle the error 
       } 
       // Upload successful 
      } 
     }); 

     return true; 
    } catch (Exception ex) { 
     // Handle the error 
    } 
    return false; 
} 

welche Arbeitsdatei ist.

Mein Problem ist, ich möchte auch einige Schlüssel Wertpaar in Body-Parameter senden, aber es schafft Problem in der Anfrage.

Ich verwende unten Code, um Schlüsselwertkörperparameter in mehrteiliger Anfrage anzuhängen.

FormBody.Builder formBodyBuilder = new FormBody.Builder(); 
formBodyBuilder.add("name", "Mac"); 
requestBody.addPart(formBodyBuilder.build()); 

aber es schafft Problem. Jede Hilfe wird wirklich geschätzt. Dank

Antwort

0

Sie versuchen, diese

RequestBody formBody = new FormBody.Builder() 
     .add("grant_type", "") 
     .add("username", "") 
     .add("password", "") 
     .build(); 
RequestBody requestBodyy = new MultipartBody.Builder() 
     .setType(MultipartBody.FORM) 
     .addPart(
       Headers.of("content-type", "form-data; name=\"image\""), 
       RequestBody.create(null, "Square Logo")) 
     .addPart(
       Headers.of("content-type", "application/json; charset=utf-8"), 
       formBody) 
     .build(); 
1

ich dies mit Okhttp3 tue und es funktioniert gut:

MediaType MEDIA_TYPE = MediaType.parse(MIME_TYPE); 
     MultipartBody.Builder builder = new MultipartBody.Builder() 
       .setType(MultipartBody.FORM) 
       .addFormDataPart("type", stringsToPost[0]) 
       ... 
       .addFormDataPart("file", file.getName(), RequestBody.create(MEDIA_TYPE, file)); 
Verwandte Themen