发布网友 发布时间:2022-04-30 01:24
共2个回答
热心网友 时间:2022-06-27 23:21
封装只是为了能更加简单,仅此而已~ 功能 UI线程切换 可选择的Callback(任意选择UI线程或者子线程) 参数规范化,GET与POST都一样的传参方式 上传/下载进度回调 可以简单的设置Head部分 可以每次请求时自动加上需要的参数 String/JSON/byte/File…都能一样简单 用法 由于辅助代码较多,在这里就不一一贴出来了,在这里仅仅演示如何使用。 异步GET Http.getAsync("/weather_mini",newUiCallback(){@OverridepublicvoidonFailure(Requestrequest,Responseresponse,Exceptione){log("getAsync:onFailed");}@OverridepublicvoidonSuccess(Stringresponse,intcode){log("getAsync:onSuccess:"+response);}},newStrParam("citykey",101010100));123456789101112 由于是get请求,在这里参数中的citykey会被自动解析到url中。 /weather_mini?citykey=1010101001 同步GET finalStringurl="/weather_mini?citykey=101010100";Stringstr=Http.getSync(String.class,url);log("getSync1:"+str);str=Http.getSync(url,newThreadCallback(){@OverridepublicvoidonFailure(Requestrequest,Responseresponse,Exceptione){log("getSync2:onFailed");}@OverridepublicvoidonSuccess(Stringresponse,intcode){log("getSync2:onSuccess:"+response);}});log("getSync2:"+str);12345678910111213141516 同步方式支持两种情况,一种有Callback,一种是没有。 当然就算加上了Callback也并不是异步,此时方法会等到执行完成后才会继续往下走。之所以这么干,是为了方便在callback中直接处理ui的事儿。 在这里有必要说明一下,返回类型需要进行指定,如果没有Callback哪么需要你传入返回类型class。 当然如果你传入了callback,哪么此时class就由callback Accountaccount=Http.getSync(Account.class,url);Useruser=Http.getSync(User.class,url);Stringstr=Http.getSync(String.class,url,newStrParam("citykey",101010100));123 Callback的情况也如上所示。 异步与同步的区别在于方法名称: Http.getSync() Http.getAsync() Http.postSync() Http.postAsync() Http.uploadSync() Http.uploadAsync() Http.downloadSync() Http.downloadAsync() 默认情况下,upload与download具有callProgress回调进度功能。 POST Stringvalue1="xxx";Stringvalue2="xxx";Stringurl="";Http.postAsync(url,newHttpCallback(){@OverridepublicvoidonFailure(Requestrequest,Responseresponse,Exceptione){e.printStackTrace();}@OverridepublicvoidonSuccess(Stringresponse,intcode){log(response);}},newStrParam("value1",value1),newStrParam("value2",value2));1234567891011121314151617 post的请求方法与get基本如出一辙。 Upload Filefile=getAssetsFile();Http.uploadAsync("/upload.php","uploadimg",file,newUiCallback(){@OverridepublicvoidonProgress(longcurrent,longcount){super.onProgress(current,count);log("uploadAsynconProgress:"+current+"/"+count);mUpload.setProgress((int)((current*100.00/count)));}@OverridepublicvoidonFailure(Requestrequest,Responseresponse,Exceptione){e.printStackTrace();log("uploadAsynconFailed");}@OverridepublicvoidonSuccess(Stringresponse,intcode){log("uploadAsynconSuccess:"+response);}});1234567891011121314151617181920 上传部分也很简单,如果需要带有参数哪么和Post的使用方式一样。当然此时传入参数就不是StrParam而是IOParam. 上传的时候你可以仅仅传递文件+文件对应的name;或者传递IOParam;也可以StrParam+IOParam的方式;当然终极一点你可以传递:Param类型。热心网友 时间:2022-06-27 23:21
不清楚