android Retrofit 的post请求方式的参数用换成json么

android Retrofit 的post请求方式的参数用换成json么,第1张

1. JSON的数据格式

a) 按照最简单的形式,可以用下面这样的 JSON 表示名称/值对:

{ "firstName": "Brett" }

b) 可以创建包含多个名称/值对的记录,比如:

{ "firstName": "Brett", "lastName":"McLaughlin", "email": "brett@newInstancecom" }

c) 可以创建值的数组

{ "people": [

{ "firstName": "Brett", "lastName":"McLaughlin", "email": "brett@newInstancecom" },

{ "firstName": "Jason", "lastName":"Hunter", "email": "jason@servletscom" }

]}

d) 当然,可以使用相同的语法表示多个值(每个值包含多个记录):

{ "programmers": [

{ "firstName": "Brett", "lastName":"McLaughlin", "email": "brett@newInstancecom" },

{ "firstName": "Jason", "lastName":"Hunter", "email": "jason@servletscom" }

],

"authors": [

{ "firstName": "Isaac", "lastName": "Asimov", "genre": "science fiction" },

{ "firstName": "Tad", "lastName": "Williams", "genre": "fantasy" }

],

"musicians": [

{ "firstName": "Eric", "lastName": "Clapton", "instrument": "guitar" }

]

}

注意,在不同的主条目(programmers、authors 和 musicians)之间,记录中实际的名称/值对可以不一样。JSON 是完全动态的,允许在 JSON 结构的中间改变表示数据的方式。

2. 在 JavaScript 中使用 JSON

JSON 是 JavaScript 原生格式,这意味着在 JavaScript 中处理 JSON 数据不需要任何特殊的 API 或工具包。

21 将 JSON 数据赋值给变量

例如,可以创建一个新的 JavaScript 变量,然后将 JSON 格式的数据字符串直接赋值给它:

var people =

{ "programmers": [

{ "firstName": "Brett", "lastName":"McLaughlin", "email": "brett@newInstancecom" },

{ "firstName": "Jason", "lastName":"Hunter", "email": "jason@servletscom" }

],

"authors": [

{ "firstName": "Isaac", "lastName": "Asimov", "genre": "science fiction" },

{ "firstName": "Tad", "lastName": "Williams", "genre": "fantasy" }

],

"musicians": [

{ "firstName": "Eric", "lastName": "Clapton", "instrument": "guitar" }

]

}

22 访问数据

将这个数组放进 JavaScript 变量之后,就可以很轻松地访问它。实际上,只需用点号表示法来表示数组元素。所以,要想访问 programmers 列表的第一个条目的姓氏,只需在JavaScript 中使用下面这样的代码:

peopleprogrammers[0]lastName;

注意,数组索引是从零开始的。

23 修改 JSON 数据

正如访问数据,可以按照同样的方式修改数据:

peoplemusicians[1]lastName = "Rachmaninov";

24 转换回字符串

a) 在 JavaScript 中这种转换也很简单:

String newJSONtext = peopletoJSONString();

b) 可以将任何 JavaScript 对象转换为 JSON 文本。并非只能处理原来用 JSON 字符串赋值的变量。为了对名为 myObject 的对象进行转换,只需执行相同形式的命令:

String myObjectInJSON = myObjecttoJSONString();

说明:将转换回的字符串作为Ajax调用的字符串,完成异步传输。

小结:如果要处理大量 JavaScript 对象,那么 JSON 几乎肯定是一个好选择,这样就可以轻松地将数据转换为可以在请求中发送给服务器端程序的格式。

3. 服务器端的 JSON

31 将 JSON 发给服务器

a) 通过 GET 以名称/值对发送 JSON

在 JSON 数据中会有空格和各种字符,Web 浏览器往往要尝试对其继续编译。要确保这些字符不会在服务器上(或者在将数据发送给服务器的过程中)引起混乱,需要在JavaScript的escape()函数中做如下添加:

var url = "organizePeoplephppeople=" + escape(peopletoJSONString());

requestopen("GET", url, true);

requestonreadystatechange = updatePage;

requestsend(null);

b) 利用 POST 请求发送 JSON 数据

当决定使用 POST 请求将 JSON 数据发送给服务器时,并不需要对代码进行大量更改,如下所示:

var url = "organizePeoplephptimeStamp=" + new Date()getTime();

requestopen("POST", url, true);

requestonreadystatechange = updatePage;

requestsetRequestHeader("Content-Type", "application/x-(>

Retrofit能够支持接口的方式发起>

原文: >

在使用Retrofit的时候,我们在通过 Builder模式 获取到Retrofit对象之后,需要通过create方法来获取到接口对象

如果仔细一看好像不对啊,为什么接口没有实现,就获取到实例了呢?那么retrofit如何实现我们指定接口的实例呢?

其实原理是:动态代理。

动态代理是 代理模式 中的一种,动态代理也算是java的一个特色。

Java动态代理类位于Javalangreflect包下,一般主要涉及到以下两个类:

我们先看一个例子,来对动态代理有一个简单的了解

可以看出,我们通过ProxynewProxyInstance产生的代理类,当调用接口的方法时,都会调用InvocationHandler#invoke方法,在这个方法中可以获取到传入的参数和注解,以及方法名等信息。

同理,retrofit同样可以通过这种动态代理的方法,获取到接口里的注解信息,参数。

通过观察也就很容易理解,retrofit是如何为我们接口生成实例的了。

Retrofit2 完全解析 探索与ok>

以上就是关于android Retrofit 的post请求方式的参数用换成json么全部的内容,包括:android Retrofit 的post请求方式的参数用换成json么、retrofit 2.0怎么查看请求的路径和参数、SpringBoot优雅的http客户端工具(Retrofit)等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/web/9479010.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-28
下一篇 2023-04-28

发表评论

登录后才能评论

评论列表(0条)

保存