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 错误的更多相关文章

  1. php YII2空数组插入报错问题处理 Array to string conversion

    问题描述 前端传空数组 [],php接收后处理不当插入数据库时报错Array to string conversion 参数示例 { "id": 0, //ID整型 "t ...

  2. Notice:Array to string conversion的问题

    如果后台或者前端输出这样的提示: Notice: Array to string conversion 原因是:用 echo  来输出数组,当然会报错,数组应该用print , print_r , 或 ...

  3. php报错Array to string conversion 解决方案,动态输出数据库列名称

    php报错Array to string conversion 解决方案,动态输出数据库列名称 问题:在Windows php5.3环境下使用:<?php echo $row->$keys ...

  4. php,二维数组的输出出现了问题,提示:Notice: Array to string conversion

    <?php $arr=array(array("111","222","333"),array("444",&qu ...

  5. PHP 报错--Array to string conversion,请用print_r() 来输出数组

    报错如下: 原因:数组不能用 echo 来输出 解决办法:print_r() 来输出数组 解决办法:var_dump() 来查看数据类型

  6. ATL and MFC String Conversion Macros

    ATL 7.0介绍了一些新的转换类和宏,为现有的宏提供了重要的改进.新的字符串转换类和名称宏的形式是:C 源类型 2[C] 目标类型[EX]其中:•源类型和目标类型描述如下表.• [C]是目标类型必须 ...

  7. 在MySQL向表中插入中文时,出现:incorrect string value 错误

    在MySQL向表中插入中文时,出现:incorrect string value 错误,是由于字符集不支持中文.解决办法是将字符集改为GBK,或UTF-8.      一.修改数据库的默认字符集   ...

  8. MySQL的Incorrect string value错误

    用以下SQL语句向表2中插入数据: insert into 表2 select * from 表1 结果出现Incorrect string value错误: 打开表2一看,里面全是问号: 后来才发现 ...

  9. Specify a culture in string conversion explicitly

    Specify a culture in string conversion explicitly There are different methods of grouping symbols, l ...

随机推荐

  1. 使用ant优化android项目编译速度,提高工作效率

    1.Android项目编译周期长,编译项目命令取消困难 2.在进行Android项目的编译的同时,Eclipse锁定工作区不能进行修改操作 3.在只进行资源文件的修改时,Eclipse对资源文件的修改 ...

  2. XmlSerializer 对象序列化成XML 自定义编码格式(gb2312)

    随着面向服务(SOA)的开发方式的兴起,客户端和服务端之间的消息传送,很多采用了XML的格式.但是大家在日常的开发中,应该会有这么种体验,就是组织xml格式的代码太繁琐,这篇随笔也是为了和大家分享下简 ...

  3. python学习笔记——提取网页中的信息正则表达式re

    被用来检索\替换那些符合某个模式(规则)的文本,对于文本过滤或规则匹配,最强大的就是正则表达式,是python爬虫里必不可少的神兵利器. 1 正则表达式re基本规则 [0-9] 任意一个数字,等价\d ...

  4. golang学习笔记 --- goroutine

    package main import ( "fmt" "io" "io/ioutil" "net/http" &quo ...

  5. Oracle 12C -- purge dba_recyclebin

    SQL> create user abce identified by abce; User created. SQL> grant resource,connect to abce; G ...

  6. 输出当前MySQL的环境变量:

    输出当前mysql的环境变量: > MySQL.exe --help >output.txt

  7. exp、Exploit、Exploit Pack、exp-gui、Payload、MetaSploit都是啥?

    对于走在安全路上的小菜来说,这几个exp.Exploit.Exploit Pack.exp-gui.Payload.MetaSploit名词着实把人转的不轻,以下给大家解释下: Exp,就是Explo ...

  8. 整合大量开源库项目(八)能够载入Gif动画的GifImageView

    转载请注明出处王亟亟的大牛之路 上周大多数时间都是依据兴起,想到什么做什么写了几个自己定义控件,把Soyi丢在那没怎么动,今天就把写的东西整合进来,顺便把SOyi"个人研发的结构理一下&qu ...

  9. MySql(十九):基础——自定义存储过程和函数

    MYSQL中创建存储过程和函数分别使用CREATE PROCEDURE和CREATE FUNCTION 使用CALL语句来调用存储过程,存储过程也可以调用其他存储过程 函数可以从语句外调用,能返回标量 ...

  10. 禁用 Windows 启动时错误恢复的“启动启动修复(推荐)”

    bcdedit /set {default} bootstatuspolicy ignoreallfailures bcdedit /set {current} recoveryenabled No