当前位置: 首页 > 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/14496630/

相关文章:

  • 网站开发人员的前景宁波网站建设信息
  • 思淘网站建设电商网页的特点
  • 网站怎么盈利站长工具seo综合查询引流
  • 定制高端网站的公司龙岗 营销型网站建设
  • 海外访问国内网站 dns全国设计网站建设
  • 网站创建服务wordpress 下雪插件
  • 如何进行网站性能优化企业邮箱注册免费申请
  • 如何做个购物网站河北邢台房价多少钱一平方
  • 推荐昆明做网站建设深圳公司网站
  • 军队房地产与建设工程法律实务在哪个网站可以购买seo自媒体运营技巧
  • 伍佰亿书画网网站临沂营销网站建设
  • 哪个网站是专门做封面素材响应式网站设计建设制作
  • 企业网站的制作及维护莱芜网站建设案例
  • 北京网站建设小公司有哪些wordpress p=29
  • 长春网站建设首选网诚传媒_宝塔面板wordpress数据库
  • visual studio 2010 网站开发教程杭州网站建设优化案例
  • 如何用frontpage2003做网站wordpress电商支付宝微信
  • 电商网站建设需求wordpress 免费中文模板
  • 会计网站建设意义开发一个网站多少钱啊
  • dw做网站注册页代码网站建设总结会上 领导讲话稿
  • 做网站网站建设织梦网站如何做地区分站
  • wordpress仿雷锋网seo培训班 有用吗
  • 网站怎么吸引用户lfw wordpress
  • 然后在亚马逊网站上做外贸PHP做克隆网站
  • 用wordpress建立的网站wordpress主机有什么优
  • 我的网站打不开了在线crm软件系统
  • 平面设计和网站运营wordpress模块
  • wordpress版权说明女装标题优化关键词
  • 全国建设部官方网站建设网站的特色
  • 国外 做励志视频的网站常州网站建设外包公司