团队开发冲刺日(十一)

  初次尝试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会出现问题,正在尝试解决问题。

猜你喜欢

转载自www.cnblogs.com/20183711PYD/p/12763626.html