Koo*_*bin 1 php curl cross-domain
我有一个函数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;
}
Run Code Online (Sandbox Code Playgroud)
我称之为:
$strGatewayResponse = make_curl_request( REQUEST_URL, compact('strMobileNo', 'strKeywords', 'strApiKey') );
Run Code Online (Sandbox Code Playgroud)
我试过这些东西,但无法让我的代码正常工作.目前它只是返回字符串("")作为输出.我哪里错了?
我的目标是简单地将少量数据发布到位于其他域的下一页并获取其xml响应并解析并显示它.还有其他简单而好的解决方案吗?
问题是你已经将RETURNTRANSFER设置为TRUE,这意味着curl返回其输出而不是直接输出它.但是,您没有在变量中捕获该输出,因此它在地板上掉落.
你有两个选择
a)删除ob _*()函数以删除PHP缓冲,然后执行
$data = curl_exec($ch)
if ($data === FALSE) {
die("Curl failed: " . curL_error($ch));
}
Run Code Online (Sandbox Code Playgroud)
之后$data包含您提取的URL的内容.
b)删除RETURNTRANSFER选项,让curl正常"直接输出到客户端",然后由PHP输出缓冲捕获.