如何将 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。它只是在视图中回显<pre></pre>
。谁能指导我?提前致谢。我想得到我的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?的主要内容,如果未能解决你的问题,请参考以下文章