Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/259.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
请求后php-curl_Php_Httprequest_Php Curl - Fatal编程技术网

请求后php-curl

请求后php-curl,php,httprequest,php-curl,Php,Httprequest,Php Curl,我写了这段代码: $data = array( 'user' => '*****', 'password' => '****', 'terminal' => '******', 'GoodURL' => '********', 'Total' => *******, ); $jsonData = json_encode($data); $ch = curl_init(); curl

我写了这段代码:

 $data = array(
    'user' => '*****',
    'password' => '****',
     'terminal' => '******',
      'GoodURL' => '********',
       'Total' => *******,
    );
    $jsonData = json_encode($data);
    $ch = curl_init();
    curl_setopt($ch, CURLOPT_URL, "https://gateway20.pelecard.biz/PaymentGW/init");
    curl_setopt($ch, CURLOPT_CUSTOMREQUEST, "POST");
    curl_setopt($ch, CURLOPT_POSTFIELDS, $jsonData);
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
    curl_setopt($ch, CURLOPT_HTTPHEADER, array('Content-Type: application/json;','Content-Length: ' . strlen($jsonData)));
        if ($call == 'pay') {
            $result = curl_exec($ch);
            $serverData = json_decode($result, true);
            echo $serverData['URL'];
        }
数据
数组中的参数很好,但我总是得到
result=false
。 有人能告诉我我做错了什么吗?

谢谢

您应该实现错误处理,而cURL本身可以告诉您这个问题。 使用,您可以执行以下操作:

print __LINE__;
if ($call == 'pay') {
   $err = curl_error($ch);
   print __LINE__;
   if (!empty($err)) {
     throw new Exception($err);
   }
   $result = curl_exec($ch);
   print serialize($result);
   $serverData = json_decode($result, true);
   print_r($serverDATA);
   echo $serverData['URL'];
}

然后你就能看到失败的原因。根据代码的其他部分,您可能希望将其打印出来,放入日志数据库,等等,抛出异常并不总是正确的处理方法。

您应该实现错误处理,而cURL本身可以告诉您这个问题。 使用,您可以执行以下操作:

print __LINE__;
if ($call == 'pay') {
   $err = curl_error($ch);
   print __LINE__;
   if (!empty($err)) {
     throw new Exception($err);
   }
   $result = curl_exec($ch);
   print serialize($result);
   $serverData = json_decode($result, true);
   print_r($serverDATA);
   echo $serverData['URL'];
}

然后你就能看到失败的原因。根据代码的其他部分,您可能希望将其打印出来,放入日志数据库,等等,抛出异常并不总是正确的处理方式。

我尝试使用您的代码,但没有收到任何错误。这是发送请求的正确方式吗?通常是的,这似乎是合法的请求。我更新了调试版本,你能再试一次吗?我发现serialize()仍然无法处理资源类型。这很有趣,
curl\u setopt($ch,CURLOPT\u RETURNTRANSFER,true)应防止curl_exec()返回资源。因此,让我们试着用:
print\r(curl\u getinfo($ch))当我打印我得到的curl\u getinfo($ch)时,在代码段的底部:数组([url]=>[content\u type]=>[http\u code]=>0[header\u size]=>0[request\u size]=>0[filetime]=>1[ssl\u verify\u result]=>0[redirect\u count]=>0[total\u time]=>0.047[namelookup\u time]=>0[connect\u time]=>0[pretransfer\u time]=>0[size\u upload]=>0[size\u download]=>0[speed\u download]=>0[speed\u upload]=>0[download\u content\u length]=>-1[upload\u content\u length]=>-1[startttransfer\u time]=>0[redirect\u time]=>0[certinfo]=>Array()[redirect\u url]=>我尝试使用您的代码,但没有收到任何错误。这是发送请求的正确方式吗?通常是的,它似乎是合法的请求。我更新了调试版本,您可以再试一次吗?我发现,serialize()不处理资源类型。这很有趣,
curl\u setopt($ch,CURLOPT\u RETURNTRANSFER,true)
应该防止curl\u exec()返回资源。因此,让我们尝试使用以下内容检查您的请求:
print\r(curl\u getinfo($ch));
当我打印curl\u getinfo($ch)时,在代码段的底部打印curl\u getinfo($ch)我得到:数组([url]=>[content\u type]=>[http\u code]=>0[header\u size]=>0[request\u size]=>0[filetime]=>-1[ssl\u verify\u result]=>0[redirect\u count]=>0[total\u time]=>0.047[namelookup\u time]=>0[connect\u time]=>0[size\u upload]=>0[size\u download]=>0[speed\u download]=>0[speed\u upload]=>0[download\u content\u length]=>-1[upload\u content\u length]=>1[starttransfer\u time]=>0[redirect\u time]=>0[redirect\u time]=>0[redirect\u time]=>0[redirect\uURL]=>