如何将POSTMAN中的数据转换为PHP Curl Request?

时间:2016-11-16 12:33:41

标签: php curl

我在邮递员中有一个API。我想创建一个CURL请求并获得适当的响应。这是我的POSTMAN API。

enter image description here

我成功地得到了这个回复。

"{\"Request\":{\"state\":\"Manama\",\"address\":\"406 Falcon Tower\",\"address2\":\"Diplomatic Area\",\"city\":\"Manama\",\"country\":\"BH\",\"fullname\":\"Dawar Khan\",\"postal\":\"317\"},\"Response\":{\"status\":\"Success\",\"code\":100,\"message\":\"Address is verified\"}}"

现在我想在我的PHP代码中使用此API调用。我用过这段代码。

    $data = array(
        'Request' => 'ValidateAddress',
        'address' => test_input($form_data->address),
        'secondAddress' => test_input($form_data->secondAddress),
        'city' => test_input($form_data->city),
        'country' => test_input($form_data->country),
        'name' => test_input($form_data->name),
        'zipCode' => test_input($form_data->zipCode),
        'merchant_id' => 'shipm8',
        'hash' => '09335f393d4155d9334ed61385712999'
    );
    $data_string = json_encode($data);

    $url = 'myurl.com/';

    $ch = curl_init($url);
    curl_setopt($ch, CURLOPT_CUSTOMREQUEST, "POST");
    curl_setopt($ch, CURLOPT_POSTFIELDS, $data_string);
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
    curl_setopt($ch, CURLOPT_HTTPHEADER, array(
        'Content-Type: application/json',
        'Content-Length: ' . strlen($data_string))
    );
    $result = curl_exec($ch);
    curl_close($ch);
    $json_result = json_decode($result, true);
    echo '<pre>';print_r($json_result);echo '</pre>';

但我看不到我的$ json_result。它只是在视图中回显<pre></pre>。谁能指导我?提前致谢。我想得到Response

更新

我使用了curl_error,它给了我以下错误。

  

卷曲错误:SSL证书问题:证书链中的自签名证书

2 个答案:

答案 0 :(得分:7)

  

非常简单只需单击代码,您将获得php中的代码。

你将获得许多语言的代码,如php,java,ruby,javascript,nodejs,shell,swift,pythom,C#等。 enter image description here

enter image description here

答案 1 :(得分:3)

根据更新的问题更新答案。

有两种方法可以解决这个问题

冗长,耗时但干净

  1. 在网络浏览器中访问网址。
  2. 打开安全详细信息。
  3. 出口证明。
  4. 相应地更改cURL选项。

    curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, true);
    curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, 2);
    curl_setopt($ch, CURLOPT_CAINFO, getcwd() . "/CAcerts/BuiltinObjectToken-EquifaxSecureCA.crt");
    
  5. 快而脏“

    curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
    

    我们正在配置cURL以接受任何服务器(对等)证书。从安全角度来看,这不是最佳选择。

    摘自very detailed and precise article的屏幕截图,以便更好地理解。请在生产现场实际实施之前参考相同的内容。