php post请求头设置json,php post请求发送json对象数据参数

网页中发送请求时,大部分情况都参数以键值组合发送数据的,而一些第三方如java开发的接口中需要发送post请求,请求参数为json类型。

既然要发送json数据,首页我们需要在请求头中定义数据类型为json,告诉服务器客服端发送过来的数据类型为json,设置请求头内容类型:Content-Type: application/json; charset=utf-8

php发送post请求的json参数代码,curl实现:<?php

//如果接口返回的数据为json,这里需要先定义数据类型为json

header("Content-type:application/json;charset=utf-8");

$url = "http://zixuephp.net";

$data = array('a'=>'test1','b'=>'test2','c'=>array('1','2','3'));

//这里需要注意的是这里php会自动对json进行编码,而一些java接口不自动解码情况(中文)

//$json_data = json_encode($data,JSON_UNESCAPED_UNICODE);

$json_data = json_encode($data);

//curl方式发送请求

$ch = curl_init();

//设置请求为post

curl_setopt($ch, CURLOPT_POST, 1);

//请求地址

curl_setopt($ch, CURLOPT_URL, $url);

//json的数据

curl_setopt($ch, CURLOPT_POSTFIELDS, $json_data);

curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);

//显示请求头

//curl_setopt($ch, CURLOPT_HEADER, 1);

curl_setopt($ch, CURLINFO_HEADER_OUT, true);

//请求头定义为json数据

curl_setopt($ch, CURLOPT_HTTPHEADER, array(

'Content-Type:application/json;charset=utf-8',

'Content-Length: '.strlen($jsonStr)

)

);

$response = curl_exec($ch);

//echo curl_getinfo($ch, CURLINFO_HTTP_CODE);

//echo curl_getinfo($ch, CURLINFO_HEADER_OUT);

curl_close($ch);

//var_dump($response;)

echo $response;

php发送post请求json数据,curl函数的实现。同理,也可以使用file_get_contents函数进行实现post请求,也能实现上面的功能。

php接收post请求json参数代码,不能再用$_POST方式接收,会接收不到数据,因为现在的内容类型是Content-Type:application/json;charset=utf-8,使用$_POST接收的类型为application/x-www-form-urlencoded或multipart/form-data类型://接收post请求来的json数据

$data = file_get_contents('php://input');

//json转php数组

$data = json_decode($data, true);

var_dump($data);

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值