0

我正在尝试使用 PHP 进行 curl 调用。我的项目有这样的流程

  • 我将用户重定向到服务器。
  • 用户使用这些服务,服务器将他重定向到我的应用程序上的一个页面。
  • 此时我想进行服务器到服务器调用以验证某些详细信息。

需要注意的一点 - 我发布 JSON 数据以及接收 JSON 数据作为响应。

我试过这个。我可以发送数据,但没有得到任何响应。

它是否正确?请帮忙!

$data = array("One" => "Onedata", "Two" => "Twodata");                                                                    
$JsonData = json_encode($data);
$ch = curl_init('https://exampleurl');                                                                      
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))                                                                       
);                                                                                                                   

$result = curl_exec($ch);
4

2 回答 2

0

尝试使用以下对我有用的代码。并确保 json_url 正确。当你在浏览器上运行它时,你应该得到一个输出。在使用 CURL 尝试之前,在浏览器上运行并查看是否获得了所需的输出。

$json_url  ='https://exampleurl';

// Initializing curl
$ch = curl_init( $json_url );

// Configuring curl options
$options = array(
CURLOPT_RETURNTRANSFER => true,
CURLOPT_HTTPHEADER => array('Content-type: application/json') 
);

// Setting curl options
curl_setopt_array( $ch, $options );

// Getting results
$results =  curl_exec($ch); // Getting jSON result string

$json_decoded = json_decode($results);
于 2013-02-07T06:15:14.170 回答
0

正如您在评论中提到的:

问题在于主机的 SSL 验证。正确设置 SSL需要一些努力(参见http://unitstep.net/blog/2009/05/05/using-curl-in-php-to-access-https-ssltls-protected-sites/ ),所以解决方法是添加以下两个选项:

curl_setopt ($ch, CURLOPT_SSL_VERIFYHOST, 0); 
curl_setopt ($ch, CURLOPT_SSL_VERIFYPEER, 0);
于 2015-04-25T11:26:28.390 回答