PHP使用Http Post请求发送Json对象数据代码解析


Posted in PHP onJuly 16, 2020

因项目的需要,PHP调用第三方 Java/.Net 写好的 Restful Api,其中有些接口,需要 在发送 POST 请求时,传入对象。

Http中传输对象,最好的表现形式莫过于JSON字符串了,但是作为参数的接收方,又是需要被告知传过来的是JSON!

其实这不难,只需要发送一个 http Content-Type头信息即可,即 “Content-Type: application/json; charset=utf-8”,参考代码如下:

<?php
/**
 * PHP发送Json对象数据
 *
 * @param $url 请求url
 * @param $jsonStr 发送的json字符串
 * @return array
 */
function http_post_json($url, $jsonStr)
{
  $ch = curl_init();
  curl_setopt($ch, CURLOPT_POST, 1);
  curl_setopt($ch, CURLOPT_URL, $url);
  curl_setopt($ch, CURLOPT_POSTFIELDS, $jsonStr);
  curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
  curl_setopt($ch, CURLOPT_HTTPHEADER, array(
      'Content-Type: application/json; charset=utf-8',
      'Content-Length: ' . strlen($jsonStr)
    )
  );
  $response = curl_exec($ch);
  $httpCode = curl_getinfo($ch, CURLINFO_HTTP_CODE);
  curl_close($ch);
 
  return array($httpCode, $response);
}
 
$url = "http://52php.cnblogs.com";
$jsonStr = json_encode(array('a' => 1, 'b' => 2, 'c' => 2));
list($returnCode, $returnContent) = http_post_json($url, $jsonStr);

API服务端端接收客户端传过来的 “Content-Type: application/json; charset=utf-8”头信息后,再将 http body 数据(即 Json字符串)转换成 类对象!

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

PHP 相关文章推荐
phpfans留言版用到的install.php
Jan 04 PHP
php框架Phpbean说明
Jan 10 PHP
PHP数组内存耗用太多问题的解决方法
Apr 05 PHP
PHP 透明水印生成代码
Aug 27 PHP
php计算整个目录大小的方法
Jun 19 PHP
php+ajax实现无刷新数据分页的办法
Nov 02 PHP
php实现购物车功能(上)
Jul 23 PHP
详解PHP的Laravel框架中Eloquent对象关系映射使用
Feb 26 PHP
php封装的图片(缩略图)处理类完整实例
Oct 19 PHP
PHP使用数组实现矩阵数学运算的方法示例
May 29 PHP
PHP操作MySQL中BLOB字段的方法示例【存储文本与图片】
Sep 15 PHP
PHP面向对象五大原则之接口隔离原则(ISP)详解
Apr 04 PHP
PHP字符串和十六进制如何实现互相转换
Jul 16 #PHP
PHP xpath提取网页数据内容代码解析
Jul 16 #PHP
浅析PHP中json_encode与json_decode的区别
Jul 15 #PHP
PHP vsprintf()函数格式化字符串操作原理解析
Jul 14 #PHP
PHP number_format函数原理及实例解析
Jul 14 #PHP
PHP array_reverse() 函数原理及实例解析
Jul 14 #PHP
PHP基于array_unique实现二维数组去重
Jul 14 #PHP
You might like
php实现的获取网站备案信息查询代码(360)
2013/09/23 PHP
php中使用url传递数组的方法
2015/02/11 PHP
php实现比较两个字符串日期大小的方法
2015/05/12 PHP
浅谈COOKIE和SESSION区别
2015/07/19 PHP
Yii1.1中通过Sql查询进行的分页操作方法
2017/03/16 PHP
PHP+原生态ajax实现的省市联动功能详解
2017/08/15 PHP
ThinkPHP5 验证器的具体使用
2018/05/31 PHP
确保Laravel网站不会被嵌入到其他站点中的方法
2019/10/18 PHP
javascript实现div的显示和隐藏的小例子
2013/06/25 Javascript
js实现两个值相加alert出来精确到指定位
2013/09/25 Javascript
jQuery 仿百度输入标签插件附效果图
2014/07/04 Javascript
jQuery中:nth-child选择器用法实例
2014/12/31 Javascript
jQuery添加删除DOM元素方法详解
2016/01/18 Javascript
node.js微信公众平台开发教程
2016/03/04 Javascript
浅谈express 中间件机制及实现原理
2017/08/31 Javascript
node.js 利用流实现读写同步,边读边写的方法
2017/09/11 Javascript
js Dom实现换肤效果
2017/10/21 Javascript
jQuery简单实现向列表动态添加新元素的方法示例
2017/12/25 jQuery
使用vue制作探探滑动堆叠组件的实例代码
2018/03/07 Javascript
react native 原生模块桥接的简单说明小结
2019/02/26 Javascript
Javascript 关于基本类型和引用类型的个人理解
2019/11/01 Javascript
Python用zip函数同时遍历多个迭代器示例详解
2016/11/14 Python
python识别图像并提取文字的实现方法
2019/06/28 Python
对python中不同模块(函数、类、变量)的调用详解
2019/07/16 Python
Python 文件数据读写的具体实现
2020/01/24 Python
基于Python数据分析之pandas统计分析
2020/03/03 Python
基于HTML5+CSS3实现简单的时钟效果
2017/09/11 HTML / CSS
戴尔加拿大官网:Dell加拿大
2016/09/17 全球购物
为什么在使用动态 SQL 语句时必须为低层数据库对象授予权限
2012/12/13 面试题
医科大学毕业生自荐信
2014/02/03 职场文书
客户答谢会活动方案
2014/08/31 职场文书
2014年民主评议党员个人总结
2014/09/24 职场文书
毕业论文答辩开场白和结束语
2015/05/27 职场文书
繁星春水读书笔记
2015/06/30 职场文书
2016年大学校运会广播稿件
2015/12/21 职场文书
mysql 数据插入优化方法之concurrent_insert
2021/07/01 MySQL