getmethod如何发送json数据

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了getmethod如何发送json数据相关的知识,希望对你有一定的参考价值。

参考技术A 有时候我们在发送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

如何在 php 的 HTTP 标头响应中仅发送 JSON 数据?

【中文标题】如何在 php 的 HTTP 标头响应中仅发送 JSON 数据?【英文标题】:How to send only JSON data in HTTP Header response in php? 【发布时间】:2016-01-23 06:32:32 【问题描述】:

我收到来自 android 和 IOS 客户端的请求。我将请求存储在一个数组中。 然后我将其编码为 JSON。现在我只想在我的 HTTP 标头中发送 JSON 数据。怎么做?目前它发送 html 页面作为响应,我只想在 200 OK 标头中发送 json 编码数据。

下面是我的代码:

public function index()



    $request = array(
'request' => $this->input->get('request'),
'device_id' => $this->input->get('device_id'),
'launch_date'=> $this->input->get('launch_date'),
'allowed_hours'=>$this->input->get('allowed_hours'),
'site_id'=> $this->input->get('site_id'),
'product'=>$this->input->get('product'),
'software_version'=> $this->input->get('software_version'),
'platform_os'=> $this->input->get('platform_os'),
'platform'=> $this->input->get('platform'),
'platform_model'=> $this->input->get('platform_model')
    );

$response = array(
    'response_code' =>200 ,
    'device_id'=> $this->input->get('device_id'),
    'allowed_hours'=> $this->input->get('allowed_hours'),
    'product'=>'mlc',
    'prov_ur'=>NULL 
);





return $this->output
    ->set_content_type('Content-Type: application/json')
    ->set_output(json_encode($response));





    
    

我的回复:

遇到 PHP 错误 严重性:通知

消息:未定义索引:请求

文件名:admin/license.php

行号:22

遇到 PHP 错误 严重性:通知

消息:未定义索引:allowed_hours

文件名:admin/license.php

行号:25

遇到 PHP 错误 严重性:通知

消息:未定义索引:allowed_hours

文件名:admin/license.php

行号:40

"response_code":200,"device_id":"70D0D01FBAD2","allowed_hours":null,"product":"mlc","prov_ur":nullarray(10) ["Host"]=>字符串(14)“192.168.50.123”[“连接”]=> string(10) "keep-alive" ["Cache-Control"]=> string(9) "max-age=0" ["Accept"]=> string(74) "text/html,application/xhtml+xml ,application/xml;q=0.9,image/webp,/;q=0.8" ["Upgrade-Insecure-Requests"]=> 字符串(1) "1" ["User-Agent"]=> string(110) "Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/47.0.2526.111 Safari/537.36" ["Accept-Encoding"]=> string(19) "gzip, deflate, sdch" ["Accept-Language"]=> string(14) "en-US,en;q=0.8" ["Cookie"]=> 串(518) “cisession = OhhBBhVodwwf7Tb55AVsU32ClMS5cgmxBl15WHA%2BrGnvo1kiK%2B67BWeAuJVSV2MY25zZd0riHC9cyx9fiigiBuqkPMT%2FKE9d6et%2FXaE3F7I59P9%2FEzy5byQ5nEkJq5xwXoH1I7%2B7v62cQL21%2Bjfnk3AwIy4luM7N51IUuTqg7TxunoZFD1gJO84r8degY1imNpmDk2W%2FjsQPn9bQpkWJ9KVMxxViFDaELEU0rIfYmif%2BdvXjK9W%2Fj7iWQxZYE9ZGazgBTKlLO%2BJZHNdPrdmGPFTzTUROZdffpF%2Bb25bRMPEJsZ9CE2mdVuSn%2FEu678utd0lcd9bh%2BDbTDikrHP4jBFOLbZfWKT%2F9r5GkMBrLBl%2BlvPx9RbAq%2FIsjeA1V7c6JYf41TO1bG2XKT14QFHm8m0qY8HCal%2B%2BR8tZe9i3zy24%3Dcfc459942e4ef82a5554257216a19d621f446a25”[ "If-Modified-Since"]=> string(29) "Thu, 01 Jan 1970 00:00:00 GMT"

【问题讨论】:

分享你的 json 响应输出 @VairaMuthu 更新了我的问题检查 您的回复也会显示错误消息? 是的,我不知道为什么显示它 我的解决方案在这里***.com/questions/34961190/… 【参考方案1】:

这不是标题问题,您的数组没有“allowed_hours”

 Message: Undefined index: allowed_hours 

你可以像这样改变你的代码

$allowed_hours = "";


if(!empty($this->input->get('allowed_hours')))
$allowed_hours = $this->input->get('allowed_hours');

$response = array(
    'response_code' =>200 ,
    'device_id'=> $this->input->get('device_id'),
    'allowed_hours'=> $allowed_hours,
    'product'=>'mlc',
    'prov_ur'=>NULL 
);

【讨论】:

以上是关于getmethod如何发送json数据的主要内容,如果未能解决你的问题,请参考以下文章

如何从 json(url) 解析数据并将数据发送到 url

如何以json的格式发送到前端

如何使用 C# 在 POST 请求中发送 json 数据 [重复]

Android Kotlin Volley 如何发送 JSON 数据

如何用Java向kafka发送json数据

如何用Java向kafka发送json数据