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

维修网站怎么做建设一个小游戏网站

维修网站怎么做,建设一个小游戏网站,市环保局网站建设方案,计算机专业毕业设计怎么做目录 一.简介 二.基本使用 三.注解 四.转换器 五.适配器 六.文件上传与下载 一.简介 A type-safe HTTP client for Android and Java。封装了OkHttp#xff0c;也是由Square公司贡献的一个处理网络请求的开源项目。 square/retrofit: A type-safe HTTP client for Andr…目录 一.简介 二.基本使用 三.注解 四.转换器 五.适配器 六.文件上传与下载 一.简介 A type-safe HTTP client for Android and Java。封装了OkHttp也是由Square公司贡献的一个处理网络请求的开源项目。 square/retrofit: A type-safe HTTP client for Android and the JVM (github.com) 在bulid.gradle中添加依赖 implementation com.squareup.retrofit2:retrofit:2.11.0 二.基本使用 服务器域名: https:/ /www.httpbin.org/ 接口:post 参数:usernamepassword 接口:get  参数:usernamespassword 1.根据Http接口创建Java接口 public interface HttpbinService {POST(post)FormUrlEncodedCallResponseBody post(Field(username) String userName,Field(password) String pwd);GET(get)CallResponseBody get(Query(username) String userName,Query(password) String pwd); } 2.创建Retrofit对象并生成接口实现类对象 Retrofit retrofit new Retrofit.Builder().baseUrl(https://httpbin.org/).build(); HttpbinService httpbinService retrofit.create(HttpbinService.class); 3.接口实现类对象调用对应方法获得响应 retrofit2.CallResponseBody call httpbinService.post(xx, 123);call.enqueue(new retrofit2.CallbackResponseBody() {Overridepublic void onResponse(retrofit2.CallResponseBody call, retrofit2.ResponseResponseBody response) {try {Log.i(TAG,response.body().string());} catch (IOException e) {e.printStackTrace();}}Overridepublic void onFailure(retrofit2.CallResponseBody call, Throwable throwable) {}}); 三.注解 • 方法注解GETPOSTPUTDELETEPATHHEADOPTIONSHTTP • 标记注解FormUrlEncodedMultipartStreaming • 参数注解QueryQueryMapBodyFieldFieldMapPartPartMap • 其他注解PathHeader HeadersUrl 详细使用请参考 GET (retrofit API) (square.github.io) public interface HttpbinService {POST(post)FormUrlEncodedCallResponseBody post(Field(username) String userName,Field(password) String pwd);GET(get)CallResponseBody get(Query(username) String userName,Query(password) String pwd);HTTP(method POST,path post,hasBody true)CallResponseBody http(Field(username) String userName,Field(password) String pwd);POST(post)CallResponseBody postBody(Body RequestBody body);POST({id}) //(/xxx/{pageNum})FormUrlEncodedCallResponseBody postInPath(Path(id) String path,Header(os) String os1,Field(username) String userName,Field(password) String pwd);//Path(pageNum)Headers({os:android,version:1.0})POST(post)CallResponseBody postWithHeader();POST()CallResponseBody postUrl(Url String url); } 四.转换器 在我们接到服务器的响应后目前无论是OkHttp还是Retrofit都只能接收到String字符串类型的数据在实际开发中经常需要对字符串进行解析将其转变为一个Java Bean对象。比如服务器响应数据为JSON格式字符串那么可以自己利用GSON库完成反序列化的操作。而Retrofit提供了多个转换器使得响应能够完成自动的数据转换。以json解析为例 添加依赖 implementation com.squareup.retrofit2:converter-gson:2.11.0 手动转换 public interface WanAndroidService {POST(user/login)FormUrlEncodedCallResponseBody login(Field(username) String username,Field(password) String pwd); } Retrofit retrofit new Retrofit.Builder().baseUrl(https://www.wanandroid.com/).build();WanAndroidService wanAndroidService retrofit.create(WanAndroidService.class);Testpublic void loginTest() throws IOException {CallResponseBody call wanAndroidService.login(xxx,123456);ResponseResponseBody response call.execute();String result response.body().string();System.out.println(result);//手动进行数据转换BaseResponse baseResponse new Gson().fromJson(result,BaseResponse.class);System.out.println(baseResponse);} 自动转换 修改接口方法 POST(post) FormUrlEncoded CallJavaBean post(Field(username) String userName, Field(password) String pwd); public interface WanAndroidService2 {POST(user/login)FormUrlEncodedCallBaseResponse login(Field(username) String username, Field(password) String pwd); } Retrofit retrofit1 new Retrofit.Builder().baseUrl(https://www.wanandroid.com/).addConverterFactory(GsonConverterFactory.create()) //添加转换器.build();WanAndroidService2 wanAndroidService2 retrofit1.create(WanAndroidService2.class);Testpublic void loginConvertTest() throws IOException {CallBaseResponse call wanAndroidService2.login(xxx,123456);ResponseBaseResponse response call.execute();BaseResponse baseResponse response.body();System.out.println(baseResponse);} 五.适配器 在实际开发中可能会存在需要先请求A接口再请求B接口的情况。比如需要请求获取收藏文章列表但是需要先登录拿到Cookie才能请求收藏文章列表接口。此时请求就有了先后顺序为了完成这个功能需要不断回调。Retrofit的接口方法返回类型必须是Call如果能够将Call改为RxJava中的Observable对于嵌套的情况就能得到非常方便优雅的解决。这就是适配器的功能如果我们想要返回的不是Call适配器就能够帮助我们转换为其他类型。以RxJava3为例 添加依赖 implementation com.squareup.retrofit2:adapter-rxjava3:2.11.0 implementation io.reactivex.rxjava3:rxandroid:3.0.2 修改接口方法 POST(post) FormUrlEncoded ObservableJavaBean post(Field(username) String userName, Field(password) String pwd); POST(user/login)FormUrlEncodedFlowableBaseResponse login2(Field(username) String username, Field(password) String pwd);GET(lg/collect/list/{pageNum}/json)FlowableResponseBody getArticle(Path(pageNum) int pageNum); MapString, ListCookie cookies new HashMap();Retrofit retrofit2 new Retrofit.Builder().baseUrl(https://www.wanandroid.com/).callFactory(new OkHttpClient.Builder().cookieJar(new CookieJar() {Overridepublic void saveFromResponse(HttpUrl httpUrl, ListCookie list) {cookies.put(httpUrl.host(), list);}Overridepublic ListCookie loadForRequest(HttpUrl url) {ListCookie cookies WanAndroidUnitTest.this.cookies.get(url.host());return cookies null ? new ArrayList() : cookies;}}).build()).addConverterFactory(GsonConverterFactory.create()) //添加转换器.addCallAdapterFactory(RxJava3CallAdapterFactory.create()) //添加适配器.build();WanAndroidService2 wanAndroidService3 retrofit2.create(WanAndroidService2.class);Testpublic void rxjavaTest() {wanAndroidService3.login2(xxxx,123456).flatMap(new FunctionBaseResponse, PublisherResponseBody() {Overridepublic PublisherResponseBody apply(BaseResponse baseResponse) throws Throwable {return wanAndroidService3.getArticle(0);}}).observeOn(Schedulers.io()).subscribeOn(Schedulers.newThread()) //AndroidSchedulers.mainThread().subscribe(new ConsumerResponseBody() {Overridepublic void accept(ResponseBody responseBody) throws Throwable {System.out.println(responseBody.string());}});while (true){}} 六.文件上传与下载 POST(post)MultipartCallResponseBody upload(Part MultipartBody.Part file);GETCallResponseBody download(Url String url); Testpublic void uploadFileTest() throws IOException {File file new File(H:\\Users\\ASUS\\Desktop\\f1.txt);MultipartBody.Part part MultipartBody.Part.createFormData(file1, f1.txt,RequestBody.create(MediaType.parse(text/plain), file));CallResponseBody call uploadService.upload(part);System.out.println(call.execute().body().string());}Testpublic void downloadFileTest() throws IOException {ResponseResponseBody response uploadService.download(https://xxx.apk).execute();InputStream inputStream response.body().byteStream();FileOutputStream fos new FileOutputStream(H:\\Users\\ASUS\\Desktop\\1.apk);int len;byte[] buffer new byte[4096];while ((len inputStream.read(buffer)) ! -1){fos.write(buffer,0,len);}fos.close();inputStream.close();} 相关参考 Retrofit (square.github.io)​​​​​​​ ReactiveX/RxJava: RxJava – Reactive Extensions for the JVM – a library for composing asynchronous and event-based programs using observable sequences for the Java VM. (github.com) ReactiveX/RxAndroid: RxJava bindings for Android (github.com)​​​​​​​
http://www.dnsts.com.cn/news/53783.html

相关文章:

  • 网站设计开发招聘买东西网站建设
  • 网站怎么做排名优化去中企动力上班怎么样
  • 专门做配电箱的网站从零开始学做网站cdsn
  • 杭州建站模板展示网页设计新建站点
  • 网站空间如何升级商务网站建设课程
  • 购买网店系统优化的影响因素
  • ftp修改网站宽带业务如何推广
  • 记事本可以做网站吗温州网站建设专业的公司
  • 商城网站主要内容ui设计主要是做什么
  • wordpress仪表盘修改广州市网络优化推广企业
  • 自己公司产品网站的好处微信公众号网页制作
  • 制作网页和网站的区别百度商桥代码怎么加到网站上
  • 云南网站营销视频拍摄技巧
  • 网站托管费用推广顾问
  • 网站开发有侵权吗一个人怎么做原创短视频
  • 网站顶部布局网站如何提高权重
  • 个人博客网站设计代码90设计网图片
  • 用自己服务器做网站用备案移动开发软件
  • 商务网站内容维护范围网络公司好听的名字
  • 中国建设规划采购网站广州外贸公司排名
  • 电脑网站拦截怎么解除只有一个域名怎么做网站
  • 网站开发需求 模板给企业做免费的推广
  • 安徽网站线上开发公司wordpress丢失连接
  • 织梦视频网站模板台州网站建设网站推广
  • 如何建设个人的网站竹子林附近网站建设
  • 重庆忠县网站建设公司推荐石家庄网站建设远策科技
  • 无锡专业制作网站合肥网络推广优惠设想科技
  • 做机械设备的做哪个网站推广较好铁道部建设司网站
  • 对电子商务网站建设和管理的理解wordpress调用服务器文件夹
  • 装修 设计 网站免插件WordPress对接公众号