getmethod如何发送json数据

getmethod如何发送json数据,第1张

有时候我们在发送HTTP请求的时候会使用到POST方式,如果是传送普通的表单数据那将很方便,直接将参数到一个Key-value形式的Map中即可。但是如果我们需要传送的参数是Json格式的,会稍微有点麻烦,我们可以使用HttpClient类库提供的功能来实现这个需求。假设我们需要发送的数据是:

1

{

2

"blog": "http://www.iteblog.com",

3

"Author": "iteblog"

4

}

我们可以通过JSONObject够着Json:

1

JSONObject jsonObject = new JSONObject()

2

3

jsonObject.put("blog", "http://www.iteblog.com")

4

jsonObject.put("Author", "iteblog")

如果需要使用Post方式来发送这个数据,我们可以如下实现:

01

private HttpMethodBase createMethod(String url, int timeout) {

02

PostMethod method = null

03

try {

04

method = new PostMethod(url)

05

JSONObject jsonObject = new JSONObject()

06

07

jsonObject.put("blog", "http://www.iteblog.com")

08

jsonObject.put("Author", "iteblog")

09

10

String transJson = jsonObject.toString()

11

RequestEntity se = new StringRequestEntity(transJson, "application/json", "UTF-8")

12

method.setRequestEntity(se)

13

//使用系统提供的默认的恢复策略

14

method.getParams().setParameter(HttpMethodParams.RETRY_HANDLER, new DefaultHttpMethodRetryHandler())

15

//设置超时的时间

16

method.getParams().setParameter(HttpMethodParams.SO_TIMEOUT, timeout)

17

} catch (IllegalArgum www.hbbz08.com entException e) {

18

logger.error("非法的URL:{}", url)

19

} catch (UnsupportedEncodingException e) {

20

e.printStackTrace()

21

}

22

23

return method

24

}

我们通过StringRequestEntity来构造请求实体,在这里,StringRequestEntity将接收三个参数,如下:

1

public StringRequestEntity(String content, String contentType, String charset)

2

throws UnsupportedEncodingException

其中参数content就是我们需要传输的数据;contentType是传送数据的格式,因为我们的数据格式是json的,所以contentType必须填写application/json(更多的contentType可以参见《HTTP Content-Type常用一览表》);charset是字符集编码。

然后我们再通过HttpClient对象的executeMethod方法来执行:

查看源代码打印帮助

1

int statusCode = httpClient.executeMethod(getMethod)

2

//只要在获取源码中,服务器返回的不是200代码,则统一认为抓取源码失败,返回null。

3

if (statusCode != HttpStatus.SC_OK) {

4

logger.error("Method failed: " + getMethod.getStatusLine() + "\tstatusCode: " + statusCode)

5

return null

6

}

在列出post与get的区别:

1.Post传输数据时,不需要在URL中显示出来,而Get方法要在URL中显示。

2.Post传输的数据量大,可以达到2M,而Get方法由于受到URL长度的限制,只能传递大约1024字节.

3.Post顾名思义,就是为了将数据传送到服务器段,Get就是为了从服务器段取得数据.而Get之所以也能传送数据,只是用来设计告诉服务器,你到底需要什么样的数据.Post的信息作为http请求的内容,而Get是在Http头部传输的。

get和post的区别

1get方式传递的参数可以在页面上看见,So安全性不高,反之post安全性高

2get方式传递的速度快。

在后台定义了get,set方法可以直接获取,不用getParameter("name")

$.get(....) $.ajax(....) $.getJSON(....)3个都是ajax传递

只是方式不同。

$.get()是以get方式传递到后台

$.ajax()需要你配置传递到后台的方式,而且功能比$.get()方法多,建议使用这个方法

$.getJSON()传递的是json数据类型

开发经验表明,两者最重要的区别是:get不能传中文,会乱码,而post就不会出现乱码问题了

首先看一下get、post的区别 1、 get是把参数数据队列加到提交表单的ACTION属性所指的URL中,值和表单内各个字段一一对应,在URL中可以看到。post是通过HTTP post机制,将表单内各个字段与其内容放置在HTML HEADER内一起传送到ACTION属性所指的URL地址。用户看不到这个过程。 2、 对于get方式,服务器端用Request.QueryString获取变量的值,对于post方式,服务器端用Request.Form获取提交的数据。两种方式的参数都可以用Request来获得。 3、get传送的数据量较小,不能大于2KB。post传送的数据量较大,一般被默认为不受限制。但理论上,因服务器的不同而异. 4、get安全性非常低,post安全性较高。 5、 <form method="get" action="a.asp?b=b">跟<form method="get" action="a.asp">是一样的,也就是说,action页面后边带的参数列表会被忽视;而<form method="post" action="a.asp?b=b">跟<form method="post" action="a.asp">是不一样的。另外Get请求有如下特性:它会将数据添加到URL中,通过这种方式传递到服务器,通常利用一个问号?代表URL地址的结尾与数据参数的开端,后面的参数每一个数据参数以“名称=值”的形式出现,参数与参数之间利用一个连接符&来区分。 Post请求有如下特性:数据是放在HTTP主体中的,其组织方式不只一种,有&连接方式,也有分割符方式,可隐藏参数,传递大批数据,比较方便。 总而言之:当我们在提交表单的时候我们通常用post方式,当我们要传送一个较大的数据文件时,需要用post。当传递的值只需用参数方式(这个值不大于2KB)的时候,用get方式即可。

所以对于ajax提交两者用法自然就明了了


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

原文地址:https://54852.com/sjk/9260947.html

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

发表评论

登录后才能评论

评论列表(0条)

    保存