2016-05-05 2 views
3

Я разработчик Android. Я разрабатываю приложение. У меня проблема. Я хочу отправить данные строкового массива с данными okhttp multipart. Но я не могу этого сделать. Поскольку для метода «addFormDataPart» требуется строковая переменная. Я не могу использовать этот метод (addFormDataPart). Я хочу отправить данные строкового массива. Что я могу сделать?Как отправить данные строкового массива с данными okhttp MultipartBuilder

Пожалуйста, помогите мне.

Мой исходный код:

private void String sendData(String serverURL, String[] arrayData){ 
RequestBody requestBody; 
requestBody = new MultipartBuilder() 
         .type(MultipartBuilder.FORM) 
         .addFormDataPart("arraydata", arrayData) 
         .build(); 
} 

ответ

0
MediaType JSON = MediaType.parse("application/json; charset=utf-8"); 

Map<String, Long> params = new HashMap<String, Long>(); 
params.put("msisdn", 8801701340061l); 

JSONObject parameter = new JSONObject(params); 


RequestBody body = RequestBody.create(JSON, parameter.toString()); 

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"), 
       body) 
     .build(); 
0

String[] arrayData 拼接 成 "one,two,three" 这种 形式:

public String getToString(String[] arrayData) { 
    StringBuilder stringBuilder = new StringBuilder(); 
    for (int i = 0 ; i < arrayData.length; i++) { 
     stringBuilder.append(arrayData[i]); 
     if (i < arrayData.length - 1) { 
      stringBuilder.append(","); 
     } 
    } 
    return stringBuilder.toString(); 
} 

再传 值:

.addFormDataPart("arraydata", getToString(arrayData)) 
+0

написать свой ответ на английском языке, пожалуйста, – slfan

1
void String sendData(String serverURL, String[] arrayData){ 
     String commaSeparatedValues = TextUtils.join(",", arrayData); 
     multiPartBuilder.addFormDataPart("key[]", commaSeparatedValues); 
    } 

Примечание: ключ здесь важно должно быть «[]»

1

Пожалуйста, попробуйте этот

private void String sendData(String serverURL, String[] arrayData){ 
    RequestBody requestBody; 
    requestBody = new MultipartBuilder() 
        .type(MultipartBuilder.FORM) 
        .addFormDataPart("arraydata", getToString(arrayData)) 
        .build(); 
} 

public String getToString(String[] arrayData) { 
    StringBuilder stringBuilder = new StringBuilder(); 
    for (int i = 0 ; i < arrayData.length; i++) { 
    stringBuilder.append(arrayData[i]); 
    if (i < arrayData.length - 1) { 
     stringBuilder.append(","); 
    } 
    } 
    return stringBuilder.toString(); 
}