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

台州自助建站在线咨询举重运动员 做网站

台州自助建站在线咨询,举重运动员 做网站,娃娃修复师的工作主要是什么,注册个人订阅号项目用已经使用了 Retrofit#xff0c;定义了接口方法#xff0c;返回了 JSON 转换后的实体对象#xff0c;炒鸡方便。但是总有意料之外的时候#xff0c;比如我不需要返回实体对象#xff0c;我要返回纯纯的 JSON 字符串#xff0c;怎么办呢#xff1f; 先看源码 通过… 项目用已经使用了 Retrofit定义了接口方法返回了 JSON 转换后的实体对象炒鸡方便。但是总有意料之外的时候比如我不需要返回实体对象我要返回纯纯的 JSON 字符串怎么办呢 先看源码 通过一系列的源码分析最后定位到 OkHttpCall 中的 parseResponse() 方法 下面代码中的 parseResponse 方法是纯复制过来的没改过可以看出当接口返回正确的数据之后无论如何都会调用 T body responseConverter.convert(catchingBody)把 JSON 字符串转换成了一个 T 对象我们没有办法通过配置什么东西来实现我们要返回纯 JSON 字符串的需求所以要想其他办法。两个办法1、让它转我们再转回来2、我们自己定义怎么转。 final class OkHttpCallT implements CallT {ResponseT parseResponse(okhttp3.Response rawResponse) throws IOException {ResponseBody rawBody rawResponse.body();// Remove the bodys source (the only stateful object) so we can pass the response along.rawResponse rawResponse.newBuilder().body(new NoContentResponseBody(rawBody.contentType(), rawBody.contentLength())).build();int code rawResponse.code();if (code 200 || code 300) {try {// Buffer the entire body to avoid future I/O.ResponseBody bufferedBody Utils.buffer(rawBody);return Response.error(bufferedBody, rawResponse);} finally {rawBody.close();}}if (code 204 || code 205) {rawBody.close();return Response.success(null, rawResponse);}ExceptionCatchingResponseBody catchingBody new ExceptionCatchingResponseBody(rawBody);try {T body responseConverter.convert(catchingBody);return Response.success(body, rawResponse);} catch (RuntimeException e) {// If the underlying source threw an exception, propagate that rather than indicating it was// a runtime exception.catchingBody.throwIfCaught();throw e;}} }方法一返回 JSONObject 后再转 JSON 字符串 这个很简单我们把返回实体类改成 JSONObject然后 Converter 会帮忙我们转成 JSONObject然后我们再转成字符串即可。缺点就是转了两轮。 // 接口定义 POST(xxx) fun fetch(Body param: RequestBody): CallJSONObject// 使用 val response api.fetch(param).execute() val json response.body()?.toJSONString() ?: 方法二自定义 Converter 模仿 FastJsonResponseBodyConverter 自定义一个 Converter直接返回字符串不转实体对象即可收工。 // 自定义Converter // 挖坑理论上可以定义一个注解然后判断 annotations 中是否包含此注解 // 如果包含则返回自定义Converter否则返回原来的Converter。 .addConverterFactory(object : Converter.Factory() {override fun responseBodyConverter(type: Type,annotations: Arrayout Annotation,retrofit: Retrofit): ConverterResponseBody, String {return ConverterResponseBody, String { responseBody -responseBody.use { it.string() }}} })// 接口定义 POST(xxx) fun fetch(Body param: RequestBody): CallString// 使用 val response api.fetch(param).execute() val json response.body() ?:
http://www.hkea.cn/news/14535078/

相关文章:

  • 注册网站后怎么建设中国企业报集团官网
  • 网站新媒体建设长沙电子商务网站建设
  • 衣服网站设计最新的国外新闻10条
  • 网站游戏案例ps网站logo制作教程
  • 企业网站设计制作价格在WordPress
  • 试玩网站建设制作软件开发培训课件
  • 拍卖网站咋做建站系统破解源码
  • 北京做网站公司电话济南市网站建设企业
  • 网站建设服务的风险seo网站营销推广公司
  • 网站制作一条龙如何用手机做音乐网站
  • 高端设计网站源码宣传 网站建设方案
  • 吴桥网站建设公司php网站实例
  • 网站搭建怎么弄的网站开发总结与收获
  • 杨浦网站建设_网站外包湖北 商城网站建设多少钱
  • 网站登录页面盗号怎么做校园网站建设管理及责任表
  • asp.net 移动网站开发一个简单的html网页
  • 做纺织行业的网站如何建立一个网站并运行
  • 网站建设漠环熊掌号大型企业网站开发
  • 怎么做彩票网站wordpress 发送邮件
  • joomla做类似赶集网的网站哪些属于功能型网站
  • 怎么验证网站番禺开发网站费用
  • 常熟响应式网站wordpress分类添加html
  • 合肥网站建设行情网址导航怎样推广
  • 网站推广成本佛山哪里有网站开发?
  • 百度站长app苏州市相城区住房和城乡建设局网站
  • 网站主页设计教程代做备案网站
  • 无锡建设企业网站wordpress搬运到lnmp
  • 做网站应该会什么软件福建建设注册中心网站
  • 沭阳网站建设哪家好星辰博客wordpress
  • 岑溪网站建设建设银行网上营业厅