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

信息流优化师需要具备哪些能力无锡优化网站价格

信息流优化师需要具备哪些能力,无锡优化网站价格,北京网站建设怎么样,网站建设找云尚网络轻量级网络请求框架MyHttputils 一、前言本版代码大换血#xff0c;使用了策略模式和构造模式来组织代码#xff0c;增加了更加人性化的请求构造#xff0c;代码质量提高、效率显著提升。(但是使用风格基本没变哦)2.0.2版本的基本的用法在《android网络请求框架》一个轻量级…轻量级网络请求框架MyHttputils 一、前言本版代码大换血使用了策略模式和构造模式来组织代码增加了更加人性化的请求构造代码质量提高、效率显著提升。(但是使用风格基本没变哦)2.0.2版本的基本的用法在《android网络请求框架》一个轻量级的异步网络请求框架MyHttpUtils(新版更新记录版本号2.X)中有过详细的介绍。下面是对2.1.5版的详细使用介绍对源码感兴趣的伙伴可以移步github了解更多的消息。二、功能介绍1、支持get、post请求2、支持http和https的协议3、支持设置连接、读取超时时间(可选)4、支持json格式的请求结果(无论json格式多复杂都能搞定)5、支持传入JavaBean对象(解析之后的javabean对象)6、支持回调方法中反应传入javabean对象这样可以在回调方法中直接拿到解析过后的javabean对象7、支持回调方法中更新UI(所以叫异步请求了)8、支持文件下载----带下载进度回调方法9、支持单文件上传10、支持多文件上传11、支持请求完成后回调---onComplete方法12、支持直接获取字符串13、支持参数与文件同时上传14、提供错误信息处理类MyHttpUtils满足了大部分的网络请求了而且非常轻量级哦(大小20.76k)三、快速使用使用gradle添加依赖(添加完之后Sync一下)compile com.huangdali:myhttputils:2.1.5当然了网络权限可别忘加哦文件上传和下载也需要添加权限(不要这个功能的就不用加)##四、入门案例###4.1、简单的一个网络请求(直接获取请求的结果---字符串)MyHttpUtils.build()//构建myhttputils.url(http://192.168.2.153:8080/MyHttpUtilsServer/string.action)//请求的url.onExecute(new StringCallBack() {//开始执行并有一个回调(异步的哦----直接可以更新ui)Overridepublic void onSucceed(String result) {//请求成功之后会调用这个方法//成功之后的拿到结果result进行处理}Overridepublic void onFailed(Throwable throwable) {//请求失败的时候会调用这个方法//失败之后的拿到错误结果throwable进行处理}});通过上面的代码就能发起get请求下面结合一个案例类演示用户输入字母点击转换即可得到对应的大写字母。(小写转大写案例)参数 content请求方式 get先看效果来看怎么实现/*** 单击转换按钮的事件** param view*/public void onUpperCase(View view) {String content etContent.getText().toString();//拿到用户输入的内容MyHttpUtils.build()//构建myhttputils.url(http://192.168.2.153:8080/MyHttpUtilsServer/string.action)//请求的url.addParam(content,content).onExecute(new StringCallBack() {//开始执行并有一个回调(异步的哦----直接可以更新ui)Overridepublic void onSucceed(String result) {//请求成功之后会调用这个方法----显示结果tvResult.append(\n);tvResult.append(Html.fromHtml( result ));tvResult.append(\n);}Overridepublic void onFailed(Throwable throwable) {//请求失败的时候会调用这个方法ToastUtils.showToast(UpperCaseActivity.this, FailedMsgUtils.getErrMsgStr(throwable));}});}ToastUtils是简单封装的Toast显示工具FailedMsgUtils是myhttputils提供的一个用于得到错误信息的工具对于get请求还可以这样搞------直接拼接即可(参数含中文时不建议使用此方法)MyHttpUtils.build()//构建myhttputils.url(http://192.168.2.153:8080/MyHttpUtilsServer/string.action?content content).onExecute(new StringCallBack() {//开始执行并有一个回调(异步的哦----直接可以更新ui)//此处省略回调处理);}参数多的情况怎么搞加很多addParam()继续往下看4.2、get请求案例之Ip地址查询参数 ip请求方式 get返回结果{code:0,data:{country:中国,country_id:CN,area:华南,area_id:800000,region:广东省,region_id:440000,city:广州市,city_id:440100,county:,county_id:-1,isp:腾讯网络,isp_id:1000153,ip:182.254.34.74}}根据json就可以得到相对应的java对象以前你是手动一个一个敲上去的吗那看看《[android插件篇]如何快速通过json构建javabean对象(GsonFormat使用教程)》你就会如鱼得水了(知道的请忽略)。/*** 查询按钮单击事件** param view*/public void onQuery(View view) {mProgressDialog.show();String ip etIp.getText().toString().trim();MyHttpUtils.build()//构建myhttputils.url(http://ip.taobao.com/service/getIpInfo.php)//获取ip的url.addParam(ip, ip)//请求参数.setJavaBean(IPBean.class)//设置请求结果对应的java对象.onExecute(new CommCallback() {Overridepublic void onSucceed(IPBean ipBean) {showResult(ipBean);}Overridepublic void onFailed(Throwable throwable) {ToastUtils.showToast(IPQueryActivity.this, FailedMsgUtils.getErrMsgStr(throwable.getMessage()));}});}/*** 显示结果* param ipBean*/private void showResult(IPBean ipBean) {IPBean.DataBean ipInfo ipBean.getData();tvIp.setText(etIp.getText().toString().trim());tvCountry.setText(ipInfo.getCountry());tvArea.setText(ipInfo.getArea());tvCity.setText(ipInfo.getCity());tvIsp.setText(ipInfo.getIsp());tvRegion.setText(ipInfo.getRegion());}效果通过myhttputils配置一些基础请求的参数即可完成android中复杂的网络请求自动解析json为对象即可拿到结果对应的java对象链式的编程使得代码结构清晰的同时也简化了网络请求过程。加点反馈效果----显示进度条对话框(可选回调方法onComplete的应用)/*** 查询按钮单击事件** param view*/public void onQuery(View view) {mProgressDialog.show();//点击的时候显示进度条String ip etIp.getText().toString().trim();MyHttpUtils.build()//构建myhttputils.url(http://ip.taobao.com/service/getIpInfo.php)//获取ip的url.addParam(ip, ip)//请求参数.setJavaBean(IPBean.class)//设置请求结果对应的java对象.onExecute(new CommCallback() {Overridepublic void onSucceed(IPBean ipBean) {showResult(ipBean);}Overridepublic void onFailed(Throwable throwable) {ToastUtils.showToast(IPQueryActivity.this, FailedMsgUtils.getErrMsgStr(throwable.getMessage()));}Overridepublic void onComplete() {//完成之后回调mProgressDialog.dismiss();//完成之后就关闭进度条}});}onComplete会在请求结束的时候回调这样你可以在接收之后做出相应的友好提示比如这里的关闭进度条4.3、Post请求之登录教程参数 username(用户名)、 pwd(密码)请求方式 post返回结果{response:succeed,msg:登录成功}看效果上代码/*** 登录的单击事件** param view*/public void onLogin(View view) {String username etUserName.getText().toString().trim();//获取用户输入的用户名String pwd etPwd.getText().toString().trim();//获取用户输入的密码Map params new HashMap();//构造请求的参数params.put(username, username);params.put(pwd, pwd);MyHttpUtils.build().url(http://192.168.2.153:8080/MyHttpUtilsServer/userlogin).addParams(params).setJavaBean(LoginBean.class).onExecuteByPost(new CommCallback() {Overridepublic void onSucceed(LoginBean loginBean) {ToastUtils.showToast(LoginActivity.this,loginBean.getMsg());}Overridepublic void onFailed(Throwable throwable) {ToastUtils.showToast(LoginActivity.this, FailedMsgUtils.getErrMsgStr(throwable));}});}多个参数的情况加建议使用map对象构造然后addPatams即可。4.4 文件下载**参数**无请求方式 get**返回结果**无代码/*** 开始下载按钮单击事件** param view*/public void onDownload(View view) {MyHttpUtils.build().url(http://192.168.2.153:8080/MyHttpUtilsServer/g3box_uesr_2.3.1.apk).setConnTimeOut(6000)//设置连接超时时间[可选默认5s].setReadTimeOut(5*60*1000)//设置读取超时时间[可选默认30s].onExecuteDwonload(new CommCallback() {Overridepublic void onSucceed(Object o) {ToastUtils.showToast(DownloadActivity.this, 下载完成);}Overridepublic void onFailed(Throwable throwable) {ToastUtils.showToast(DownloadActivity.this, FailedMsgUtils.getErrMsgStr(throwable));}Overridepublic void onDownloading(long total, long current) {System.out.println(total-------current);tvProgress.setText(new DecimalFormat(######0.00).format(((double) current / total) * 100)%);//保留两位小数}});这里引入了setConnTimeOut (设置连接超时时间)由于下载大文件的话比较耗时读取时间是30s可能不够 所以可以通过setReadTimeOut设置长时间比如5分钟5601000【两个方法传入的都是时间的毫秒值】温馨提示 myhttputils模式会下载文件到sdcard/download目录下面如需修改使用setFileSaveDir(/sdcard/myapp) 即可效果图4.5、文件上传参数 无请求方式 无返回结果 无4.5.1、单文件上传效果图上代码/*** 单文件上传** param view*/public void onUpload(View view) {mProgressDialog.show();MyHttpUtils.build().uploadUrl(http://192.168.2.153:8080/MyHttpUtilsServer/upload).addFile(sdcard/download/wifi.exe).onExecuteUpLoad(new CommCallback() {Overridepublic void onComplete() {mProgressDialog.dismiss();ToastUtils.showToast(UploadActivity.this,上传完成);}Overridepublic void onSucceed(Object o) {}Overridepublic void onFailed(Throwable throwable) {ToastUtils.showToast(UploadActivity.this, FailedMsgUtils.getErrMsgStr(throwable));}});}**温馨提示**添加文件可以通过addFile(文件的绝对路径)和addFile(new File(文件绝对路径))还有就是这里使用uploadUrl而不是url来设置请求接口哦4.5.2、多文件上传多文件上传有两种方式即addFile多次和addFiles一个集合addFile就不演示了下面演示addFiles上代码/*** 多文件上传** param view*/public void onUploadMult(View view) {mProgressDialog.show();Listfilesnew ArrayList();files.add(new File(sdcard/download/wifi.exe));files.add(new File(sdcard/download/g3box_uesr_2.3.1.apk));MyHttpUtils.build().uploadUrl(http://192.168.2.153:8080/MyHttpUtilsServer/upload).addFiles(files).onExecuteUpLoad(new CommCallback() {Overridepublic void onComplete() {mProgressDialog.dismiss();ToastUtils.showToast(UploadActivity.this,上传完成);}Overridepublic void onSucceed(Object o) {}Overridepublic void onFailed(Throwable throwable) {ToastUtils.showToast(UploadActivity.this, FailedMsgUtils.getErrMsgStr(throwable));}});}4.6、参数与文件同时上传参数 content请求方式 get效果代码/*** 参数与文件同时上传** param view*/public void onUploadParamFile(View view) {MyHttpUtils.build()//构建myhttputils.url(http://192.168.2.153:8080/MyHttpUtilsServer/string.action)//请求的url.uploadUrl(http://192.168.2.153:8080/MyHttpUtilsServer/upload).addParam(content, abc).addFile(sdcard/download/wifi.exe).onExecute(new StringCallBack() {//开始执行并有一个回调(异步的哦----直接可以更新ui)Overridepublic void onSucceed(String result) {//请求成功之后会调用这个方法ToastUtils.showToast(UploadActivity.this, 转换成功-------- result);}Overridepublic void onFailed(Throwable throwable) {//请求失败的时候会调用这个方法ToastUtils.showToast(UploadActivity.this, FailedMsgUtils.getErrMsgStr(throwable));}}).onExecuteUpLoad(new CommCallback() {Overridepublic void onComplete() {mProgressDialog.dismiss();ToastUtils.showToast(UploadActivity.this, 上传完成);}Overridepublic void onSucceed(Object o) {}Overridepublic void onFailed(Throwable throwable) {ToastUtils.showToast(UploadActivity.this, FailedMsgUtils.getErrMsgStr(throwable));}});}参数与文件同时上传其实就是请求的组合五、使用小技巧**5.1、日志打印 **为了方便调试myhttputils还会在logcat中打印i级别的json字符串日志如日志太多可添加HttpRequester为过滤条件看图(是不是很容易就看出来了)上面是请求正常的情况下打印同样错误情况下也会有e级别日志-------下面这个是url地址错误时的错误信息5.2、错误信息对照表如果你不想使用myhttputils提供的FailedMsgUtils.getErrMsgStr()方法你可以自己根据返回的throwable进行处理下面是myhttputils可能会截获的异常对照表5.3、关于请求参数的配置如果你觉得在一条链上set方法太多不太好myhttputils还提供了HttpBody方法先构造完了通过setHttpBody即可。(这种方式需要你自己判断文件是否存在哦)下面以上面下载的案例来调整/*** 开始下载按钮单击事件** param view*/public void onDownload(View view) {HttpBody body new HttpBody();body.setUrl(http://192.168.2.153:8080/MyHttpUtilsServer/wifi.exe).setConnTimeOut(6000).setFileSaveDir(/sdcard/myapp).setReadTimeOut(5 * 60 * 1000);MyHttpUtils.build().setHttpBody(body).onExecuteDwonload(new CommCallback() {Overridepublic void onSucceed(Object o) {ToastUtils.showToast(DownloadActivity.this, 下载完成);}Overridepublic void onFailed(Throwable throwable) {ToastUtils.showToast(DownloadActivity.this, FailedMsgUtils.getErrMsgStr(throwable));}Overridepublic void onDownloading(long total, long current) {System.out.println(total ------- current);tvProgress.setText(new DecimalFormat(######0.00).format(((double) current / total) * 100) %);//保留两位小数}});}最后如反馈良好可以考虑详解源码留言告诉我吧如有bug、新功能建议请留言我一定以最快的速度回复。
http://www.zqtcl.cn/news/638009/

相关文章:

  • 销售网站内容设计书籍管理网站建设需求文档
  • 韩国网站如何切换中文域名如何备案教程
  • 网站维护的基本概念二维码生成器使用方法
  • 公司网站建设模块简介搭建自己的网站需要什么
  • 想做个网站怎么做给国外网站做流量
  • 长春建站培训班免备案虚拟空间
  • 做面包的公司网站alexa世界排名查询
  • 网站备案后下一步做什么263邮箱注册
  • 燕郊网站制作廊坊网站制作网站
  • 开网站建设网站如何做excel预览
  • p2p网站建设方案电商企业有哪些
  • 建设农场网站天元建设集团有限公司法定代表人
  • 论坛网站建设价格百度广告官网
  • 网站开发有哪些语言ps做登录网站
  • 网站怎么做百度关键字搜索国外服务器做网站不能访问
  • 如何选择品牌网站建设做网站容易吧
  • 广州建网站比较有名的公司提升学历英语翻译
  • php网站开发视频教程厦门网站建设公司首选乐振
  • 网站推广项目微信小程序登陆入口
  • 建设部监理协会网站微信公众平台开发微网站
  • 莆田cms建站模板现在可以做网站么
  • windows 建网站湖北省最新消息今天
  • 手机商场网站制作在线看网站源码
  • 云南建设厅网站房地产开发资质做哪一类网站能赚钱
  • 佛山优化网站关键词创作者服务平台
  • python做网站多少钱超级商城系统
  • 网站开发pc端和手机端长沙专业个人做网站哪家好
  • 永州网站建设收费标准天长网站开发
  • 做网站分辨率多少钱装修公司10强排名
  • 营销网站建设818gx在南宁做家教兼职的网站