Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/274.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 将URL传递到JSON数组中_Javascript_Php_Json_Curl_Callfire - Fatal编程技术网

Javascript 将URL传递到JSON数组中

Javascript 将URL传递到JSON数组中,javascript,php,json,curl,callfire,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_VERIFYH

我试图在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;
Params最终成为

$params = '[{"phoneNumber":"15551231234","message":"Click here http://link.it/i.htm?id=55&key=23987gf2389fg"}]';
一切看起来都很好。如果$msg变量中没有链接,params创建的JSON数组实际上可以完美工作。我能够成功执行CURL调用。唯一一次失败是在我向$msg变量添加链接时

我已经联系了API的支持团队,他们告诉我一切都应该正常进行

在这一点上,我猜测在将链接写入JSON数组之前,需要以某种方式对其进行转义。我试着避开冒号和前斜杠与后斜杠,但这并不能解决问题。有没有人能解释一下如何传递url


提前谢谢你

不要手动构造JSON。构造和数组或对象,然后对其调用json_encode()

然后,当使用curl通过POST提交JSON时,需要在头中指定字符串的长度

curl_setopt($http, CURLOPT_HTTPHEADER, 
            array( 'Content-Type: application/json', 
                   'Content-Length: '. strlen($param_json_string)));           

当然,这是除了您正在设置的身份验证等其他头之外的(正如我在
doPost()
方法中看到的那样)。

不要手动构造JSON。构造和数组或对象,然后对其调用json_encode()

然后,当使用curl通过POST提交JSON时,需要在头中指定字符串的长度

curl_setopt($http, CURLOPT_HTTPHEADER, 
            array( 'Content-Type: application/json', 
                   'Content-Length: '. strlen($param_json_string)));           

当然,这是对其他头的补充,比如您正在设置的身份验证(正如我在
doPost()
方法中看到的那样)。

不要手工制作JSON。使用PHP函数。它负责创建正确的JSON。不要手工制作JSON。使用PHP函数。它负责创建正确的JSON。请等待stackoverflow精灵批准对此帖子的编辑,以便您可以看到代码示例。不幸的是,您尝试了它,但是curl调用仍然返回了一个错误。这一定是API的错误。正在编码的json是完美的
“[{”phoneNumber:“15551231234”,“message:“单击此处http:\/\/link.it\/i.html?id=55&key=247A626C8B2893BF1E5”}”
一个有效的json字符串可能仍然无法在http请求中使用,通过URL编码,它将转义任何特殊的http字符,如空格、
,诸如此类。所有的帮助都很棒。我试了两件事。我对整个JSON字符串进行URL编码
$params=JSON\u encode($params)$safeParams=urlencode($params){“httpStatusCode”:422,“internalCode”:0,“message:“无法转换实体:意外字符('%'(代码37)):在[Source:org.apache.catalina.connector处应为有效值(数字、字符串、数组、对象、'true'、'false'或'null')\n。CoyoteInputStream@a14933;行:1,列:2],错误类型:JsonParseException“}
当我执行curl调用时。我还在消息
$linkMsg=“单击此处”中的链接上尝试了urlencode$链接$linkMsg=urlencode($linkMsg)
的响应更加模糊,只是说消息中有错误。嗯…等待stackoverflow精灵批准对这篇文章的编辑,这样您就可以看到代码示例。不幸的是,您尝试了它,但是curl调用仍然返回了一个错误。这一定是API的错误。正在编码的json是完美的
“[{”phoneNumber:“15551231234”,“message:“单击此处http:\/\/link.it\/i.html?id=55&key=247A626C8B2893BF1E5”}”
一个有效的json字符串可能仍然无法在http请求中使用,通过URL编码,它将转义任何特殊的http字符,如空格、
,诸如此类。所有的帮助都很棒。我试了两件事。我对整个JSON字符串进行URL编码
$params=JSON\u encode($params)$safeParams=urlencode($params){“httpStatusCode”:422,“internalCode”:0,“message:“无法转换实体:意外字符('%'(代码37)):在[Source:org.apache.catalina.connector处应为有效值(数字、字符串、数组、对象、'true'、'false'或'null')\n。CoyoteInputStream@a14933;行:1,列:2],错误类型:JsonParseException“}
当我执行curl调用时。我还在消息
$linkMsg=“单击此处”中的链接上尝试了urlencode$链接$linkMsg=urlencode($linkMsg)
的响应更加模糊,只是说消息中有错误。嗯。。。