添加数据如:multipartBody.addFormDataPart("username", "张三")取数据: List<MultipartBody.Part> parts = multipartBody.parts();
for (MultipartBody.Part part : parts) {
 
}part只能添加,不能取kv数据啊?谁知道怎么处理吗?我用拦截器拦截请求,需要multipartBody的kv参数作处理。(不要回答处理后再传)

解决方案 »

  1.   

       MultipartBody multipartBody = (MultipartBody) request.body();
                    List<MultipartBody.Part> parts=multipartBody.parts();                for (MultipartBody.Part part:parts) {
                        if(part.body().contentType().type().equals("text")){
                            Headers headers=part.headers();
                            for (int i = 0; i <headers.names().size() ; i++) {
                                Log.d("ParameterInterceptor","headers======value="+headers.value(i));
                                String value=headers.value(i);//valueform-data; name="article_type"
                                String replaceValue="form-data; name=";//这段在MultipartBody.Part源码中看到
                                if(value.contains(replaceValue)){
                                    String key=value.replace(replaceValue,"").replaceAll("\"","");;
                                    Log.d("ParameterInterceptor","MultipartBody======key="+key);
                                    map.put(key,bodyToString(part.body()));
                                    builder.addPart(part);
                                    break;
                                }
                            }
                        }
                        Log.d("ParameterInterceptor","MultipartBody======"+bodyToString(part.body()));
                        Log.d("ParameterInterceptor","MultipartBody======type=="+part.body().contentType().type());
                    }