当前位置: 首页 > news >正文

建筑网址导航/宁波seo外包服务

建筑网址导航,宁波seo外包服务,游戏软件开发需要学什么,杭州企业网站制作公司之前上传图片都是直接将图片转化为io流传给服务器,没有用框架传图片。最近做项目,打算换个方法上传图片。Android发展到现在,Okhttp显得越来越重要,所以,这次我选择用Okhttp上传图片。Okhttp目前已经更新到Okhttp3版本…

之前上传图片都是直接将图片转化为io流传给服务器,没有用框架传图片。

最近做项目,打算换个方法上传图片。

Android发展到现在,Okhttp显得越来越重要,所以,这次我选择用Okhttp上传图片。

Okhttp目前已经更新到Okhttp3版本了,用法跟之前相比,也有一些差别。在网上找了很多资料,

并和java后台同事反复调试,终于成功上传多张图片,同时传递一些键值对参数。

以下是我对该过程的封装:

private static final MediaType MEDIA_TYPE_PNG = MediaType.parse("image/png");/*** 上传多张图片及参数

*@paramreqUrl URL地址

*@paramparams 参数

*@parampic_key 上传图片的关键字

*@parampaths 图片路径*/

public Observable sendMultipart(String reqUrl,Map params,String pic_key, Listfiles){return Observable.create(new Observable.OnSubscribe(){

@Overridepublic void call(Subscriber super String>subscriber) {

MultipartBody.Builder multipartBodyBuilder= newMultipartBody.Builder();

multipartBodyBuilder.setType(MultipartBody.FORM);//遍历map中所有参数到builder

if (params != null){for(String key : params.keySet()) {

multipartBodyBuilder.addFormDataPart(key, params.get(key));

}

}//遍历paths中所有图片绝对路径到builder,并约定key如“upload”作为后台接受多张图片的key

if (files != null){for(File file : files) {

multipartBodyBuilder.addFormDataPart(pic_key, file.getName(), RequestBody.create(MEDIA_TYPE_PNG, file));

}

}//构建请求体

RequestBody requestBody =multipartBodyBuilder.build();

Request.Builder RequestBuilder= newRequest.Builder();

RequestBuilder.url(reqUrl);//添加URL地址

RequestBuilder.post(requestBody);

Request request=RequestBuilder.build();

mOkHttpClient.newCall(request).enqueue(newCallback() {

@Overridepublic voidonFailure(Call call, IOException e) {

subscriber.onError(e);

subscriber.onCompleted();

call.cancel();

}

@Overridepublic void onResponse(Call call, Response response) throwsIOException {

String str=response.body().string();

subscriber.onNext(str);

subscriber.onCompleted();

call.cancel();

}

});

}

});

}

View Code

在UI界面的调用:

OkHttp3Utils.getInstance().sendMultipart(Constants.URL.URL_ADD_NOTICE, mMap, "appendix", mImageList)

.observeOn(AndroidSchedulers.mainThread())

.subscribeOn(Schedulers.newThread())

.subscribe(new Subscriber() {

@Overridepublic voidonCompleted() {

}

@Overridepublic voidonError(Throwable throwable) {

LogUtil.i(TAG,"throwable:" +throwable.toString());

}

@Overridepublic voidonNext(String s) {

LogUtil.i(TAG,"s:" +s);

}

});

View Code

调试过程中,有一次将

multipartBodyBuilder.addFormDataPart(pic_key, file.getName(), RequestBody.create(MEDIA_TYPE_PNG, file));

写成了

multipartBodyBuilder.addFormDataPart(pic_key, null, RequestBody.create(MEDIA_TYPE_PNG, file));

导致后台无法用常规方法获取图片(虽然断点调试时也能看到图片数据),这点需要注意。

最后:非常感谢同事的帮助!赠人玫瑰,手有余香~

http://www.jmfq.cn/news/4751785.html

相关文章:

  • 大连建设网站公司/世界十大搜索引擎及地址
  • 武汉商业网站/搜索引擎技巧
  • 怎么做外语网站/seo研究中心论坛
  • wordpress目的/长沙快速排名优化
  • 微信公众号h5商城网站开发/百度联盟是什么
  • 网站之间如何交换友情链接/新媒体营销六种方式
  • 网站建设一流公司/学历提升哪个教育机构好一些
  • 网站设计建设公司/短视频运营公司
  • django 网站开发案例/站长工具seo综合查询分析
  • wordpress短网址/湖南百度seo
  • wordpress 干什么/搜索引擎优化包括哪些
  • 自己做网站不用WordPress/专业seo外包
  • 成都企业网站的建立/培训学校招生营销方案
  • 备案博客域名做视频网站会怎么样/国内最好的危机公关公司
  • 初中做网站软件/网站运营指标
  • 免费注册店铺位置/抖音seo培训
  • 网站后台登陆验证码不显示/郑州百度seo
  • 网站建设概念股/百度推广公司怎么代理到的
  • 广州番禺区房价/网络营销企业网站优化
  • 品牌的手机网站制作/网络营销的特点主要包括什么
  • 建设网站需要的硬件设备/爱用建站
  • 包头做网站的/手机百度2020最新版
  • 字母logo设计生成器/电商网站seo怎么做
  • 珠海pc网站建设/惠州网站建设方案推广
  • 美国人做网站/全网搜索指数
  • 重庆妇科医院推荐/百度seo发包工具
  • 网站怎么做拉新/网站秒收录工具
  • 随州公司做网站/关键词优化推广排名软件
  • 公司自己做网站/深圳百度seo怎么做
  • wordpress直接上传视频网站/sem竞价推广托管