简单的卷曲请求不起作用

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响应并解析并显示它.还有其他简单而好的解决方案吗?

Mar*_*c B 5

问题是你已经将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输出缓冲捕获.