使用PHP将数据发送到API

时间:2018-10-01 08:44:42

标签: php curl

选项1:

$data= array(
    "Code" => "abcde",
    "Id" => "A007",
    "RefNo" => "123456",
    "UserName" => "QWE",
    "UserEmail" => "qwe@gmail.com",
);
$url="https://testing.php";
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL,$url);
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true);
curl_setopt($ch, CURLOPT_POSTFIELDS, http_build_query($data));
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
$result=curl_exec($ch);
curl_close ($ch);
echo $result;
}


选项2:

<form method="post" action="https://testing.php">
    <input type="hidden" value="abcde" name="Code">
    <input type="hidden" value="A007" name="Id">
    <input type="hidden" value="QWE" name="UserName">
    <input type="hidden" value="qwe@gmail.com" name="UserEmail">
    <input type="hidden" value="123456" name="RefNo">
    <input type="submit" name="submit">
</form>


A和B之间有什么区别吗?因为我尝试了两者,但是curl只从api中获得“失败”响应。

2 个答案:

答案 0 :(得分:4)

没有什么区别,因为它们都发送POST请求,但是您可以说使用的技术唯一的区别:

  • 第一个可以完全从后端完成,它使您可以在将数据发送到API之前对其进行验证。
  • 第二个不允许这样做,您可能需要在提交之前编写JavaScript代码进行验证。

您将要遇到的错误可能是由于请求中的数据丢失。或您尝试访问其API的服务器上的IP地址未列入白名单。

此外,没有这样的URL https://testing.php,请尝试使用您的IP地址或完整的服务器地址来发送请求。

答案 1 :(得分:1)

您可以使用以下代码:

$url = 'testing.php';

$fields = array(
    'Id' => urlencode($_POST['Id']),
    'Code' => urlencode($_POST['Code']),
    'UserName' => urlencode($_POST['UserName']),
    'UserEmail' => urlencode($_POST['UserEmail']),
    'RefNo' => urlencode($_POST['RefNo'])
);

foreach($fields as $key=>$value) { $fields_string .= $key.'='.$value.'&'; }
rtrim($fields_string, '&');

打开连接:

$ch = curl_init();

设置网址,POST变量的数量,POST数据:

curl_setopt($ch,CURLOPT_URL, $url);
curl_setopt($ch,CURLOPT_POST, count($fields));
curl_setopt($ch,CURLOPT_POSTFIELDS, $fields_string);

执行帖子:

$result = curl_exec($ch);

关闭连接:

curl_close($ch);