Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/289.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 使用cURL将POST数据发送到API_Php_Curl - Fatal编程技术网

Php 使用cURL将POST数据发送到API

Php 使用cURL将POST数据发送到API,php,curl,Php,Curl,我可以使用以下表格发送短信 <form action="http://myserviceprovider/myname/server.php" method="post"> <input type="hidden" value="MyUsername" name="user" /> <input type="hidden" value="MyPassword" name="pass" /> <input type

我可以使用以下表格发送短信

<form action="http://myserviceprovider/myname/server.php" method="post"> 
 <input  type="hidden" value="MyUsername" name="user" />   
 <input  type="hidden" value="MyPassword" name="pass" />           
 <input  type="hidden" value="MyKey" name="sid" />    
 <input  type="hidden" value="12345678" name="sms[0][0]" /> 
 <input  type="hidden" value="MyFrist SMS Text" name="sms[0][1]" />
 <input  type="hidden" value="97654321" name="sms[1][0]" />                    
 <input  type="hidden" value="MySecond SMS Text" name="sms[1][1]" />
 <input type="submit" />
</form> 
问题是,我无法弄清楚如何使用以下命令发送包括username、password和Mykey在内的值

$ch = curl_init($url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_CUSTOMREQUEST, "POST");
curl_setopt($ch, CURLOPT_POSTFIELDS,http_build_query($post));
curl_exec($ch);

您能告诉我如何解决这个问题吗?

要使用curl以POST方式发送数据,您需要通过将
CURLOPT\u POST
设置为true来告诉curl您想要POST。然后您需要传递数据-将其放入数组中,如
array('user'=>'',)
并使用
CURLOPT\u POSTFIELDS
将此数组传递给curl

据我所知,您希望使用cURL发布到表单URL,而不是使用站点。您需要发送其他表单字段以及sms信息,即您需要将您的用户名、密码、Sid传递到表单url

示例脚本可能如下所示:

<?php
define('SMS_SERVICE_URL', 'http://myserviceprovider/myname/server.php');
define('USERNAME', 'YOUR_USERNAME_HERE');
define('PASSWORD', 'YOUR_PASSWORD_HERE');
define('KEY', 'YOUR_KEY/SID_HERE');

$sms =array(
           array("0" => "12345678", "1" => "MyFrist SMS Text"),
           array("0" => "97654321", "1" => "MySecond SMS Text")
);


$post = array(
        'user' => USERNAME,
        'pass' => PASSWORD,
        'sid'  => KEY,
        'sms'  => $sms,
);

$ch = curl_init();

curl_setopt($ch, CURLOPT_URL, SMS_SERVICE_URL);
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_POSTFIELDS, http_build_query($post));

curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);

$result = curl_exec ($ch);

curl_close ($ch);
?>


您确实意识到他们有一些规范,我认为没有人能够猜出他们请求的数据是什么?您不需要使用http\u build\u query()。curl可以直接接受数组。无论如何,如果上面的表单是如何提交的,那么您的$sms数组构建是错误的。
<?php
define('SMS_SERVICE_URL', 'http://myserviceprovider/myname/server.php');
define('USERNAME', 'YOUR_USERNAME_HERE');
define('PASSWORD', 'YOUR_PASSWORD_HERE');
define('KEY', 'YOUR_KEY/SID_HERE');

$sms =array(
           array("0" => "12345678", "1" => "MyFrist SMS Text"),
           array("0" => "97654321", "1" => "MySecond SMS Text")
);


$post = array(
        'user' => USERNAME,
        'pass' => PASSWORD,
        'sid'  => KEY,
        'sms'  => $sms,
);

$ch = curl_init();

curl_setopt($ch, CURLOPT_URL, SMS_SERVICE_URL);
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_POSTFIELDS, http_build_query($post));

curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);

$result = curl_exec ($ch);

curl_close ($ch);
?>