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

Posted

技术标签:

【中文标题】如何将 POSTMAN 中的数据转换为 PHP Curl Request?【英文标题】:How can I convert data from POSTMAN into PHP Curl Request? 【发布时间】:2017-03-30 15:51:57 【问题描述】:

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

我已成功收到此回复。

"\"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。它只是在视图中回显&lt;pre&gt;&lt;/pre&gt;。谁能指导我?提前致谢。我想得到我的Response

更新

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

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

【问题讨论】:

使用curl_error检查Curl是否有任何错误。您可以参考this answer 查找错误。 postman生成的代码你试过了吗? Curl 错误:SSL 证书问题:证书链中的自签名证书@BhavikShah 你应该检查this answer。它与证书有关。 @BhavikShah 我已经检查过它是否有效。谢谢。 【参考方案1】:

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

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

冗长、耗时但干净

    在网络浏览器中访问 URL。 打开安全详细信息。 出口证书。

    相应地更改 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");
    

快速但肮脏

curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);

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

摘自very detailed and precise article 并附有截图以便更好地理解。请在实际在生产站点中实施之前参考相同的内容。

【讨论】:

你能告诉我最后一件事吗?我必须在 $data_string 中发送什么才能成功发送我的响应?我还没有收到任何响应,并且我的参数丢失了错误。 @AliZia:我不认为,$data_string 中缺少任何内容。但是,您应该验证您是否已传递所有必需的参数。我的意思是,在技术上没有任何问题。可能是,您缺少一些成功请求和响应所需的参数。 @AliZia:或者你应该尝试使用源中的静态数据进行测试。只需检查一下,静态数据是否一切正常。如果是,那么数据或使用的函数有问题。 @AliZia: cURL 使用静态文本??【参考方案2】:

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

您将获得多种语言的代码,例如 php、java、ruby、javascript、nodejs、shell、swift、pythom、C# 等。

【讨论】:

以上是关于如何将 POSTMAN 中的数据转换为 PHP Curl Request?的主要内容,如果未能解决你的问题,请参考以下文章

如何将此 curl 请求转换为 Postman 请求

如何将python中的类转换为pandas数据框?

如何将此对象转换为 PHP 中的数组

将 cURL 转换为 Postman REST 调用

如何使用 PHP 将 JSON 字符串数据转换为数组?

如何将 cURL 转换为邮递员?