我有一个函数make_curl_request来发出curl请求。
/**
* General Function to make curl request */
function make_curl_request($url, $data)
{
ob_start();
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_HEADER, 0);
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_POSTFIELDS, $data);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, TRUE);
curl_exec($ch);
curl_close($ch);
$strCurlResponse = ob_get_contents();
ob_end_clean();
return $strCurlResponse;
}
我称之为:
$strGatewayResponse = make_curl_request( REQUEST_URL, compact('strMobileNo', 'strKeywords', 'strApiKey') );
我尝试了这些东西,却无法使我的代码正常工作。目前它只是返回字符串(“”)作为输出。我哪里错了?
我的目标是简单地将少量数据发布到位于其他域的下一页并获取其xml响应并解析并显示它。还有其他简单而好的解决方案吗?
答案 0 :(得分:5)
问题是你已经将RETURNTRANSFER设置为TRUE,这意味着curl返回其输出而不是直接输出它。但是,你没有在一个变量中捕获那个输出,所以它正在落在地板上。
你有两个选择
a)删除ob _ *()函数以删除PHP缓冲,然后执行
$data = curl_exec($ch)
if ($data === FALSE) {
die("Curl failed: " . curL_error($ch));
}
之后$data
包含您提取的网址的内容。
b)删除RETURNTRANSFER选项,让curl正常“直接输出到客户端”,然后由PHP输出缓冲捕获。
答案 1 :(得分:3)
尝试添加一行:
curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, false);
FALSE阻止cURL验证对等方的证书。可以使用CURLOPT_CAINFO选项指定要验证的备用证书,也可以使用CURLOPT_CAPATH选项指定证书目录。
答案 2 :(得分:0)
发送没有标题的curl POST是不行的。 请找到以下链接。它可能有所帮助 OAuth, PHP, Rest API and curl gives 400 Bad Request