1 javascript php json curl callfire
我正在尝试在PHP中执行使用JSON数组的curl语句.我将在下面发布我的代码,并对我试图做的事情进行一些解释
function doPost($url, $user, $password, $params) {
$authentication = 'Authorization: Basic '.base64_encode("$user:$password");
$http = curl_init($url);
curl_setopt($http, CURLOPT_SSL_VERIFYHOST, false);
curl_setopt($http, CURLOPT_SSL_VERIFYPEER, false);
curl_setopt($http, CURLOPT_RETURNTRANSFER, true);
curl_setopt($http, CURLOPT_URL, $url);
curl_setopt($http, CURLOPT_POST, true);
curl_setopt($http, CURLOPT_POSTFIELDS, $params);
curl_setopt($http, CURLOPT_HTTPHEADER, array(
'Content-Type: application/json', $authentication));
return curl_exec($http);
}
$link = "http://link.it/i.htm?id=55&key=23987gf2389fg";
$phone = '5551231234';
$phone = '1' . $phone;
//Write message
$msg = "Click here " . $link;
$params = '[{"phoneNumber":"'.$phone.'","message":"'.$msg.'"}]';
//Send message
$return = doPost('https://api.link.com','username','password',$params);
echo $return;
Run Code Online (Sandbox Code Playgroud)
参数结束了
$params = '[{"phoneNumber":"15551231234","message":"Click here http://link.it/i.htm?id=55&key=23987gf2389fg"}]';
Run Code Online (Sandbox Code Playgroud)
一切看起来都不错 如果$ msg变量中没有链接,那么由params创建的JSON数组实际上可以正常工作.我能够执行成功的CURL调用.它失败的唯一时间是我添加一个链接到我的$ msg变量.
我已经联系API的支持团队,他们告诉我一切都应该在他们的最后工作.
此时我猜测链接需要以某种方式进行转义才能写入JSON数组.我已经尝试用反斜杠转义冒号和正斜杠,但它不能解决问题.是否有人可以透露如何通过网址?
先感谢您!!
不要手动构建JSON.构造和数组或对象然后在其上调用json_encode().
$params = array();
$object = array("phone"=>$phone, "message"=>$linkMsg);
$params[] = (object) $object;
$param_json_string = json_encode($params);
Run Code Online (Sandbox Code Playgroud)
然后,当使用curl通过POST提交JSON时,您需要在标题中指定字符串的长度.
curl_setopt($http, CURLOPT_HTTPHEADER,
array( 'Content-Type: application/json',
'Content-Length: '. strlen($param_json_string)));
Run Code Online (Sandbox Code Playgroud)
当然,这是除了您正在设置的身份验证之外的其他标头(正如我在您的doPost()方法中所做的那样).
| 归档时间: |
|
| 查看次数: |
1210 次 |
| 最近记录: |