PHP使用CURL请求微信接口返回为空

先贴请求代码

/*** 发送post请求* @param	string	$url	需要请求的地址* @return 	json	$output	返回的json字符串*/
function postUrl($url, $data){$data  = json_encode($data);$headerArray =array("Content-type:application/json;charset='utf-8'","Accept:application/json");$curl = curl_init();curl_setopt($curl, CURLOPT_URL, $url);curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, FALSE);curl_setopt($curl, CURLOPT_SSL_VERIFYHOST,FALSE);curl_setopt($curl, CURLOPT_POST, 1);curl_setopt($curl, CURLOPT_POSTFIELDS, $data);curl_setopt($curl,CURLOPT_HTTPHEADER,$headerArray);curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);$output = curl_exec($curl);return json_decode($output,true);
}

几乎所有接口均为https协议,所以加上这两句。这里就可以排除https协议下的返回空值情况。

curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, FALSE);
curl_setopt($curl, CURLOPT_SSL_VERIFYHOST,FALSE);

因为此前对接了一个微信代理商平台,我一直使用json来处理的请求参数和返回结果,这没什么问题。当我再次对接微信官方接口时,返回一直为空。经过断点排查,最终锁定为格式问题。

说到这里就要建议一下各位PHPer,当不确定打印数据类型时,尽量使用var_dump进行打印。
在这里插入图片描述
从上图可以看到微信接口的返回值,聪明的小伙伴一眼就发现问题了。明明就两个22却有1035个字节,此时原格式输出就可查看到微信返回的结果。
在这里插入图片描述此前我在方法外打印始终为空,是因为我做了json_decode操作,加上此前一直使用print_r在打印,竟然一时没排查出来,这都是坏习惯搞出来的破事儿啊。

最后附上修改后的代码,以及xml于PHP数组互转方法。

/*** 发送post请求* @param	string	$url	需要请求的地址* @return 	json	$output	返回的json字符串*/
function postUrl($url, $data){$data  = arrayToXml($data);$headerArray =array("Content-type:application/json;charset='utf-8'","Accept:application/json");$curl = curl_init();curl_setopt($curl, CURLOPT_URL, $url);curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, FALSE);curl_setopt($curl, CURLOPT_SSL_VERIFYHOST,FALSE);curl_setopt($curl, CURLOPT_POST, 1);curl_setopt($curl, CURLOPT_POSTFIELDS, $data);curl_setopt($curl,CURLOPT_HTTPHEADER,$headerArray);curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);$output = curl_exec($curl);return xmlToArray($output,true);
}/*** 数组转XML* @param	string	$arr	数组* @return 	xml		$output	返回的xml数据*/
function arrayToXml($arr)
{$xml = "<xml>";foreach ($arr as $key=>$val){if (is_numeric($val)){$xml.="<".$key.">".$val."</".$key.">";}else{$xml.="<".$key."><![CDATA[".$val."]]></".$key.">";}}$xml.="</xml>";return $xml;
}/*** XML转数组* @param	string	$xml	XML数据* @return 	xml		$output	返回的数组*/
function xmlToArray($xml){$array = (array)simplexml_load_string($xml, 'SimpleXMLElement', LIBXML_NOCDATA);return $array;
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/39318.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

关于PHP调用openAI chatGPT一些问题

我是直接使用gpt生成的curl代码区调用的 1&#xff1a;windows可能出现代理访问问题&#xff0c;报443端口问题 解决办法&#xff1a;开启代理后&#xff0c;需要到设置 确认这里打开状态 在curl请求里面加上对应的代码 curl_setopt($ch, CURLOPT_PROXY, "127.0.0.1&qu…

【包装类】

1.包装类的分类 1&#xff09;针对八种基本数据类型相应的引用类型---包装类 2&#xff09;有了类的特点&#xff0c;就可以调用类中的方法 3&#xff09; 基本数据类型 包装类 boolean Boolean char Character byte Byte short Short int Integer long Long …

包装类

一.包装类&#xff1a; 1. 包装类(Wrapper Class): Java语言是一个面向对象的语言&#xff0c;但是Java中的基本数据类型却是不面向对象的。基本类型的数据不具备"对象"的特性&#xff08;没有成员变量和成员方法可以调用&#xff09;&#xff0c;因此&#xff0c;ja…

包装类概述

Java中有8中基本数据类型&#xff0c;分别是&#xff1a; 包装类就是这8种数据类型所对应的引用数据类型&#xff0c;分别是&#xff1a; - 可能有同学会问&#xff1a;Java为什么要给基本数据类型提供对应的引用数据呢? - 第一&#xff0c;Java是面向对象的语言&#xff0c…

uni-app使用小图标的方式

1.首先我们需要去这里 随便点入一个进入第二步骤 2.把你需要的小图标加入到购物车 3.点击购物车把小图标【添加至项目】 4.最后下载到本地【解压放到项目中去】 5.如下&#xff1a; 6.在main.js里面引入 import ./style/iconfont.css 7.最后就是在页面中直接通过样式类名使…

教你如何用PS制作iOS端APP应用图标AppIcon.appiconset

开发iOS端APP要准备18个不同尺寸的logo&#xff0c;虽然现在有网站提供在线生成APP应用图标&#xff0c;但是这样可能存在泄露高清logo甚至被抢占的风险&#xff0c;下面我将教大家如何用Photoshop制作iOS端AppIcon.appiconset。 其实很简单&#xff0c;我们只要按照Xcode提示做…

【新拟态】左上角标签样式、ICON图标样式、模仿AppStore的应用图标

效果如图↑ <!doctype html> <html lang"en"> <head><meta charset"UTF-8"><meta name"viewport" content"widthdevice-width, user-scalableno, initial-scale1.0, maximum-scale1.0, minimum-scale1.0"…

老胡的周刊(第088期)

老胡的信息周刊[1]&#xff0c;记录这周我看到的有价值的信息&#xff0c;主要针对计算机领域&#xff0c;内容主题极大程度被我个人喜好主导。这个项目核心目的在于记录让自己有印象的信息做一个留存以及共享。 &#x1f3af; 项目 nginx-ui[2] Nginx 后台管理 UI&#xff1a;…

【总结】1739- 使用 Pake 一键将网页打包成桌面 App

通常&#xff0c;我们说的软件指的是一个可以独立运行的程序&#xff0c;那么我们前端工程师开发的网页也属于软件吗&#xff1f;从计算机的角度来说&#xff0c;网页也是一个软件&#xff0c;但它很少让人归为软件一类。作为一个前端 web 开发者&#xff0c;我一直被桌面 App …

资讯周报@2 (2023-03-19)

title: 资讯周报-2 date: 2023-03-19 author: “KazooTTT” tags: 周报资料收集chatgpt设计figmavercel 时间范围&#xff1a;2023-03-12-2023-03-19 来源&#xff1a;github、twitter、微博、b站 一、浏览器插件&油猴脚本 沉浸式双语网页翻译扩展 #翻译 #浏览器插件 …

chatgpt赋能python:利用Python抢鞋的技巧与方法

利用Python抢鞋的技巧与方法 随着互联网的迅速发展&#xff0c;近年来&#xff0c;越来越多的人选择网上购物&#xff0c;其中包括了运动鞋的选购。而在运动鞋市场上&#xff0c;限量版鞋款成为了热门&#xff0c;但是由于数量有限&#xff0c;往往在发售后的几秒钟就被抢购一…

【OpenAI】利用 OpenAI 的 ChatGPT 和 GPT-4 训练与Ogimi 创始人谈冥想

OpenAI在12月1日发布的NLP&#xff08;自然语言识别&#xff09;新模型ChatGPT&#xff0c;刚刚与广大网友度过了一个愉快而又有意义的周末。 该模型是OpenAI在2020年推出的NLP预训练模型——GPT-3的衍生产品。在此之前&#xff0c;一直有预测OpenAI将在今年底或明年初推出GPT-…

AI_News周刊:第五期

2023.03.06-2023.03.11 News 1.OpenAI 发布了ChatGPT 和 Whisper API OpenAI 以比预期低得多的价格发布了 ChatGPT 和 Whisper API&#xff0c;部分原因是为了响应开源 LLM 和竞争对手模型的进步。ChatGPT 可通过 GPT-Turbo 以每 1k 代币 0.002 美元的价格获得&#xff0c;比…

ChatGLM-6B论文代码笔记

ChatGLM-6B 文章目录 ChatGLM-6B前言一、原理1.1 优势1.2 实验1.3 特点&#xff1a;1.4 相关知识点 二、实验2.1 环境基础2.2 构建环境2.3 安装依赖2.4 运行2.5 数据2.6 构建前端页面 3 总结 前言 Github&#xff1a;https://github.com/THUDM/ChatGLM-6B 参考链接&#xff1a…

迷人的人工智能:为什么它是程序员的第四大“浪漫”?

人工智能是指让计算机具有类似人类的智能和思维的技术&#xff0c;它是当今科技领域最前沿和最具潜力的研究方向之一。 马斯克是一位著名的企业家&#xff0c;他对人工智能也非常感兴趣&#xff0c;并投资了多个与之相关的公司&#xff08;最著名的当属时下最火热的ChatGPT背后…

浅析人工智能,大数据

人工智能发展到了什么阶段? 人工智能的发展从开始到现在,经历了三个阶段,第一个阶段我们叫做计算智能,这个阶段要解决的事情,叫做能存会算。第二个阶段是感知智能,这个阶段是能听会说,能看会认。第三个阶段往下发展应该叫认知智能,要达到什么样的程度呢?要能够理解、会…

CTP 7*24小时期货自动交易程序

如何配置程序&#xff1a; 策略如何行&#xff1a; 运行程序&#xff1a; 更详细的说明&#xff1a; 常见问题及说明&#xff1a; 配置程序后无法登陆&#xff1f; 昨天程序还可以正常登陆&#xff0c;今天怎么不行了&#xff1f; 怎样及时发现交易过程中出现问题&am…

如何在智能合约中调用另一个合约的函数

智能合约是在区块链中被执行的一段程序&#xff0c;因为它们在区块链上执行&#xff0c;所以不依赖于任何的中心化服务器。目前最主流的智能合约编程语言是 Solidity。 在以太坊区块链中&#xff0c;智能合约可以和其他已经部署的智能合约进行交互。除了以太坊&#xff0c;其他…

chatgpt是否会代替程序员

ChatGPT能否取代程序员&#xff1f; ChatGPT是一种非常普遍的人工智能&#xff08;AI&#xff09;系统&#xff0c;被广泛应用于自然语言处理领域。但是&#xff0c;这个问题是一个非常复杂的问题&#xff0c;需要经过认真的思考和辩论。ChatGPT能否取代程序员&#xff1f;这个…