curl Array to string conversion 错误
0x00 故障
由于GuzzleHttp在iis上使用错误,于是开始替换其为Unirest,没想到发送了一个curl Array to string conversion 错误
0x01 原因
跟踪调用流程,发现是在curl_setopt时设置CURLOPT_POSTFIELDS后抛出的异常。
查看php文档原因是
CURLOPT_POSTFIELDS setting using an array. The array used to set the POST fields must only contain scalar values. Multidimentional arrays or objects lacking a __toString implementation will cause Curl to error.
即CURLOPT_POSTFIELDS不支持多维数组或没有__toString方法的对象。
0x02 解决
阅读GuzzleHttp和Unirest原来是两者POST的时候参数格式不一致
//GuzzleHttp
[
["name" => $key1,
"contents" => $val1],
["name" => $key2,
"contents" => $val2],
//....
]
//Unirest
[
"key1"=>$val1,
"key2"=>$val2,
//...
]
既然如此,写个转换参数格式的函数即可,如下
function convertGuzzleParamToUnirest($param) {
$res = [];
foreach ($param as $item){
if(is_array($item)){
$res[$item['name']] = $item['contents'];
}
}
return $res;
}
0x03 扩展
Unirest获取Response直接用$response->body 即可,而且是已经json_decode后的,比GuzzleHttp的简洁许多。
如果要获取原始返回内容,使用$response->raw_body。
curl Array to string conversion 错误的更多相关文章
- php YII2空数组插入报错问题处理 Array to string conversion
问题描述 前端传空数组 [],php接收后处理不当插入数据库时报错Array to string conversion 参数示例 { "id": 0, //ID整型 "t ...
- Notice:Array to string conversion的问题
如果后台或者前端输出这样的提示: Notice: Array to string conversion 原因是:用 echo 来输出数组,当然会报错,数组应该用print , print_r , 或 ...
- php报错Array to string conversion 解决方案,动态输出数据库列名称
php报错Array to string conversion 解决方案,动态输出数据库列名称 问题:在Windows php5.3环境下使用:<?php echo $row->$keys ...
- php,二维数组的输出出现了问题,提示:Notice: Array to string conversion
<?php $arr=array(array("111","222","333"),array("444",&qu ...
- PHP 报错--Array to string conversion,请用print_r() 来输出数组
报错如下: 原因:数组不能用 echo 来输出 解决办法:print_r() 来输出数组 解决办法:var_dump() 来查看数据类型
- ATL and MFC String Conversion Macros
ATL 7.0介绍了一些新的转换类和宏,为现有的宏提供了重要的改进.新的字符串转换类和名称宏的形式是:C 源类型 2[C] 目标类型[EX]其中:•源类型和目标类型描述如下表.• [C]是目标类型必须 ...
- 在MySQL向表中插入中文时,出现:incorrect string value 错误
在MySQL向表中插入中文时,出现:incorrect string value 错误,是由于字符集不支持中文.解决办法是将字符集改为GBK,或UTF-8. 一.修改数据库的默认字符集 ...
- MySQL的Incorrect string value错误
用以下SQL语句向表2中插入数据: insert into 表2 select * from 表1 结果出现Incorrect string value错误: 打开表2一看,里面全是问号: 后来才发现 ...
- Specify a culture in string conversion explicitly
Specify a culture in string conversion explicitly There are different methods of grouping symbols, l ...
随机推荐
- Android----输入模式设置
InputType的参数: 用法:((EditText)findViewById(R.id.edit)).setInputType(InputType.*); int TYPE_CLASS_DATET ...
- 如何在windows server 2008 部署asp.net mvc
我们做好的asp.net mvc网站,要部署到windows server 2008(IIS7.0)网站,首先要安装好.net framework 4.0,开发工具VS2010,VS2012,VS20 ...
- 【Oracle】Oracle中常用的系统函数
Oracle SQL 提供了用于执行特定操作的专用函数.这些函数大大增强了 SQL 语言的功能.函数可以接受零个或者多个输入参数,并返回一个输出结果.在Oracle还可以自定义函数,关于更多信息可以查 ...
- 用十条命令在一分钟内检查Linux服务器性能[转]
概述 通过执行以下命令,可以在1分钟内对系统资源使用情况有个大致的了解. uptime dmesg | tail vmstat 1 mpstat -P ALL 1 pidstat 1 iostat - ...
- linux服务器rz命令上传文件
1.首先,要是服务器不支持rz命令的话,需要安装执行 yum -y install lrzsz 2.再输入rz -be命令,选择需要上传的本地文件
- easyui combobox 动态加载的两种方法
reload 方法 javascript代码 //指定id 和 text 否则始终选择第一个 $('#contact_city').combobox({ valueField:'id', textFi ...
- [javase学习笔记]-7.2 构造函数与一般函数的差别
这一节我们简单学习一下构造函数与一般函数之间的差别所在. 那么它们有什么差别呢,结合上一节,我们能够总结出下面两点差别: 第一个差别: 构造函数:对象创建时,就会调用与之相应的构造函数,对对象进行初始 ...
- Python 文件 fileno() 方法
描述 Python 文件 fileno() 方法返回一个整型的文件描述符(file descriptor FD 整型),可用于底层操作系统的 I/O 操作. 语法 fileno() 方法语法如下: f ...
- spring中InitializingBean接口使用理解(转)
InitializingBean接口为bean提供了初始化方法的方式,它只包括afterPropertiesSet方法,凡是继承该接口的类,在初始化bean的时候会执行该方法. 测试程序如下: imp ...
- linux环境下matlab连接mysql
因为matlab是基于java的,但是原生的matlab是没有jdbc的,这是一个java的mysql connection. 只有matlab有这个包,才能正确的连接mysql. 1.在http:/ ...