我正在尝试将cURL用于这样的GET请求:
function connect($id_user){
$ch = curl_init();
$headers = array(
'Accept: application/json',
'Content-Type: application/json',
);
curl_setopt($ch, CURLOPT_URL, $this->service_url.'user/'.$id_user);
curl_setopt($ch, CURLOPT_HTTPHEADER, $headers);
curl_setopt($ch, CURLOPT_HEADER, 0);
$body = '{}';
curl_setopt($ch, CURLOPT_CUSTOMREQUEST, "GET");
curl_setopt($ch, CURLOPT_POSTFIELDS,$body);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
// Timeout in seconds
curl_setopt($ch, CURLOPT_TIMEOUT, 30);
$authToken = curl_exec($ch);
return $authToken;
}
当你看到我想传递$ body作为请求的正文,但我不知道它是否正确而且我实际上无法调试它,你知道是否使用{{1有GET请求吗?
因为这个enteire代码适用于POST,现在我正在尝试将此更改为GET,如您所见
答案 0 :(得分:26)
CURLOPT_POSTFIELDS
顾名思义,是针对POST
请求的正文(有效负载)。对于GET
请求,有效负载是查询字符串形式的URL的一部分。
在您的情况下,您需要使用您需要发送的参数(如果有)构造URL,并将其他选项删除为cURL。
curl_setopt($ch, CURLOPT_URL, $this->service_url.'user/'.$id_user);
curl_setopt($ch, CURLOPT_HTTPHEADER, $headers);
curl_setopt($ch, CURLOPT_HEADER, 0);
//$body = '{}';
//curl_setopt($ch, CURLOPT_CUSTOMREQUEST, "GET");
//curl_setopt($ch, CURLOPT_POSTFIELDS,$body);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
答案 1 :(得分:22)
接受的答案是错误的。 GET
个请求确实可以包含一个正文。这是解决方案implemented by WordPress,例如:
curl_setopt( $ch, CURLOPT_CUSTOMREQUEST, 'GET' );
curl_setopt( $ch, CURLOPT_POSTFIELDS, $body );
编辑:为了澄清,在这种情况下,初始curl_setopt
不是必需的,但没有任何伤害。包含它是为了充分说明被引用的示例代码。
答案 2 :(得分:4)
<?php
$post = ['batch_id'=> "2"];
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL,'https://example.com/student_list.php');
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_POSTFIELDS, http_build_query($post));
$response = curl_exec($ch);
$result = json_decode($response);
$new= $result->status;
if( $new =="1")
{
echo "<script>alert('Student list')</script>";
}
else
{
echo "<script>alert('Not Removed')</script>";
}
?>
答案 3 :(得分:0)
对于那些遇到类似问题的人,this request library允许您在php应用程序中发出外部HTTP请求。简化的GET,POST,PATCH,DELETE和PUT请求。
示例请求如下
<xsl:template match="MAX/MSISDN">
<msisdn>
<xsl:value-of select="concat('9', .)"/>
</msisdn>
</xsl:template>
相同文档可在项目的README.md
中找到答案 4 :(得分:-1)
你使用
以正确的方式完成了它curl_setopt($ch, CURLOPT_POSTFIELDS,$body);
但我注意到你遗失了
curl_setopt($ch, CURLOPT_POST,1);