业务中难免会调用微信啊阿里云的... 所谓人家的接口,我目前着手的就是要向微信发送请求获取素材信息。所以这个时候就用到了okHttp3来帮助我们发送http的get啊post请求了。
遇到的一个比较棘手的问题就是该项目的HttpUtil中没有传输File的方法。所以呢最后在负责人的帮助下,就解决了这个问题:
日常ps下:参数讲解!!!url就是发送请求的url,file就是你要传输的文件,typeName是文件的名字,
FROM_DATA是啥?是这个:
private static final MediaType FROM_DATA = MediaType.parse("multipart/form-data");
2.png是啥?是上传的文件的名字。。。(对这个感兴趣的小朋友可以去查看下文档哦~我真是懒得查了哈哈哈哈我的目的就是传上去就成,别的I dont care)
public static String sendFromDataPostRequest(String url, File file,String typeName)throws IOException{
RequestBody fileBody = RequestBody.create(MediaType.parse("application/octet-stream"),file);
MultipartBody body = new MultipartBody.Builder()
.setType(FROM_DATA)
.addFormDataPart(typeName,"2.png",fileBody)
.build();
Request request = new Request.Builder()
.post(body)
.url(url)
.build();
return getClient().newCall(request).execute().body().string();
}
追加我的调用:
//添加新图片素材
@Override
public JSONObject getMediaId(String type,File file) {
JSONObject responseData =null;
try{
//str = HttpUtils.sendFromDataPostRequest(UrlConstant.addMaterialUrl+"?access_token="+getAccessToken()+"&type="+type,file,"media");
responseData = JSONObject.fromObject(HttpUtils.sendFromDataPostRequest(UrlConstant.addMaterialUrl+"?access_token="+getAccessToken()+"&type="+type,file,"media")) ;
}catch (IOException e){
e.printStackTrace();
}
//return responseData;
return responseData;
}