初次尝试OKHttp,图片传输遇到问题。
Android Studio导入OKHttp:
首先点击File---->Project Structure...
如下图所示,选择Dependencies-------->All Dependencies下的+号,选择第一个Library Dependency
搜索okhttp,选择com.squareup.okhttp3,点击OK即可,之后等待导入完成。
说明错误代码处:
1 handin.setOnClickListener(new View.OnClickListener() { 2 @Override 3 public void onClick(View v) { 4 //正文信息 5 final String note_str = note.getText().toString(); 6 //标题信息 7 final String title_str = title.getText().toString(); 8 final String[] see_judge={""}; 9 10 //根据开关决定笔记是否公开,0为公开,1为不公开 11 see.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() { 12 @Override 13 public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) { 14 if(isChecked){ 15 see_judge[0] = "公开"; 16 } 17 else{ 18 see_judge[0] = "私有"; 19 } 20 } 21 }); 22 //OKHttp 23 OkHttpClient client = new OkHttpClient(); 24 MultipartBody.Builder builder = new MultipartBody.Builder(); 25 builder.setType(MultipartBody.FORM); 26 builder.addFormDataPart("title",title_str); 27 builder.addFormDataPart("note",note_str); 28 builder.addFormDataPart("see",see_judge[0]); 29 30 int pic_i=0; 31 String URL="http://..../Servlet"; 32 for(HashMap<String,Object>pic:imageItem){ 33 Set<String> set=pic.keySet(); 34 for(String key:set){ 35 if(pic_i==0){ 36 pic_i++; 37 continue; 38 }else{ 39 File file = new File(pic.get(key)); 40 builder.addFormDataPart("picture",file.getName(), RequestBody.create(PNG,file)); 41 } 42 } 43 } 44 RequestBody requestBody = builder.build(); 45 Request.Builder RequestBuilder = new Request.Builder(); 46 RequestBuilder.url(URL); 47 RequestBuilder.post(requestBody); 48 Request request=RequestBuilder.build(); 49 client.newCall(request).enqueue(new Callback() { 50 @Override 51 public void onFailure(@NotNull Call call, @NotNull IOException e) { 52 call.cancel(); 53 } 54 55 @Override 56 public void onResponse(@NotNull Call call, @NotNull Response response) throws IOException { 57 call.cancel(); 58 } 59 }); 60 } 61 });
这是我尝试的OKHttp传输图片+文本参数的方法,图片以文件形式上传,问题在于行39,我存多个图片时使用的是HashMap保存,value值是Object类型的,直接转换成file会出现问题,正在尝试解决问题。