2016-07-06 3 views
1

Я использую okhttp3 для загрузки изображения на сервер и я успех в публикации изображения, но я не могу POST параметр с MultipartBodyне удается получить доступ к параметру POST в okhttp3 Android

мой код здесь ..

File sourceFile = new File(sourceImageFile); 

      Log.logInfo("File...::::" + sourceFile + " : " + sourceFile.exists()); 

      final MediaType MEDIA_TYPE_PNG = MediaType.parse("image/png"); 


      OkHttpClient client = App.getInstance().getOkHttpClient(); 

      RequestBody requestBody = new MultipartBody.Builder() 
        .setType(MultipartBody.FORM) 
        .addFormDataPart(KEY_ACCESS_TOKEN, accessToken) 
        .addFormDataPart(KEY_FILE, "profile.png", RequestBody.create(MEDIA_TYPE_PNG, sourceFile)) 
        .build(); 

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

      Response response = client.newCall(request).execute(); 

Я хочу добавить «ключ» и «значение» методом POST в приведенном выше коде. Так как я могу это сделать.

ответ

2

Используйте это, это должно быть HashMap<String, String> таким образом и add это до Builder.

Это Импорт.

import okhttp3.OkHttpClient; 
import okhttp3.FormBody; 
import okhttp3.Request; 
import okhttp3.RequestBody; 

Код:

// HashMap with Params 
HashMap<String, String> params = new HashMap<>(); 
params.put("Param1", "A"); 
params.put("Param2", "B"); 

// Initialize Builder (not RequestBody) 
FormBody.Builder builder = new FormBody.Builder(); 

// Add Params to Builder 
for (Map.Entry<String, String> entry : params.entrySet()) { 
    builder.add(entry.getKey(), entry.getValue()); 
} 

// Create RequestBody 
RequestBody formBody = builder.build(); 

// Create Request (same) 
Request request = new Request.Builder() 
     .url("url") 
     .post(formBody) 
     .build(); 
3

Как я узнал раньше, эта ссылка https://stackoverflow.com/a/34127008/6554840

В этом прошло member_id с его значением.

Значит, вы передаете значения с помощью KEY_ACCESS_TOKEN. Это должно быть работа.

.addFormDataPart(KEY_ACCESS_TOKEN, accessToken) 

будет работать как параметр сообщения.

Надеюсь, он сработает.

Примечание: Должно быть, ваша веб-сторона работает.

+0

но я не могу получить данные этого сообщения на стороне сервера PHP в середине, это interceoter. –

+0

Я не знаю больше об этом. Если вы получите решение, пожалуйста, дайте мне знать. – Zoya

Смежные вопросы