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 相关文章推荐
基于Zend的Captcha机制的应用
May 02 PHP
鸡肋的PHP单例模式应用详解
Jun 03 PHP
探讨file_get_contents与curl效率及稳定性的分析
Jun 06 PHP
如何在smarty中增加类似foreach的功能自动加载数据
Jun 26 PHP
PHP分页效率终结版(推荐)
Jul 01 PHP
php 创建以UNIX时间戳命名的文件夹(示例代码)
Mar 08 PHP
php以post形式发送xml的方法
Nov 04 PHP
Laravel 5框架学习之路由、控制器和视图简介
Apr 07 PHP
Twig模板引擎用法入门教程
Jan 20 PHP
PHP获取不了React Native Fecth参数的解决办法
Aug 26 PHP
Laravel 框架控制器 Controller原理与用法实例分析
Apr 14 PHP
深入解析PHP底层机制及相关原理
Dec 11 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更改目录及子目录下所有的文件后缀扩展名的代码
2010/10/12 PHP
WordPress中使主题支持小工具以及添加插件启用函数
2015/12/22 PHP
PHP与Java对比学习日期时间函数
2016/07/03 PHP
PHP Filter过滤器全面解析
2016/08/09 PHP
PHP实现权限管理功能示例
2017/09/22 PHP
javascript学习(二)javascript常见问题总结
2013/01/02 Javascript
在JavaScript中typeof的用途介绍
2013/04/11 Javascript
IE8对JS通过属性和数组遍历解析不一样的地方探讨
2013/05/06 Javascript
jquery实现页面图片等比例放大缩小功能
2014/02/12 Javascript
三种方式获取XMLHttpRequest对象
2014/04/21 Javascript
javascript 实现 原路返回
2015/01/21 Javascript
基于Jquery代码实现手风琴菜单
2015/11/19 Javascript
jQuery的Ajax用户认证和注册技术实例教程(附demo源码)
2015/12/08 Javascript
JS常见问题之为什么点击弹出的i总是最后一个
2016/01/05 Javascript
bootstrap3使用bootstrap datetimepicker日期插件
2017/05/24 Javascript
React Native中导航组件react-navigation跨tab路由处理详解
2017/10/31 Javascript
JS中call和apply函数用法实例分析
2018/06/20 Javascript
详解关于webpack多入口热加载很慢的原因
2019/04/24 Javascript
js实现详情页放大镜效果
2020/10/28 Javascript
[48:48]2014 DOTA2国际邀请赛中国区预选赛 SPD-GAMING VS Dream TIME
2014/05/21 DOTA
Python实现LRU算法的2种方法
2015/06/24 Python
Python实现二维数组输出为图片
2018/04/03 Python
实例讲解python中的序列化知识点
2018/10/08 Python
使用numba对Python运算加速的方法
2018/10/15 Python
python科学计算之scipy——optimize用法
2019/11/25 Python
TensorFlow 输出checkpoint 中的变量名与变量值方式
2020/02/11 Python
Python实现中英文全文搜索的示例
2020/12/04 Python
python实现文件+参数发送request的实例代码
2021/01/05 Python
css3之UI元素状态伪类选择器实例演示
2017/08/11 HTML / CSS
金宝贝童装官网:Gymboree
2016/08/31 全球购物
BIBLOO波兰:捷克的一家在线服装店
2018/03/09 全球购物
Lookfantastic希腊官网:英国知名美妆购物网站
2018/09/15 全球购物
建筑设计师岗位职责
2013/11/18 职场文书
经济贸易系毕业生求职信
2014/05/31 职场文书
道路运输企业安全生产责任书
2014/07/28 职场文书
导游词之吉林吉塔
2019/11/11 职场文书