通过curl的curl_exec()而不是通常的回调文件获取API的响应

时间:2010-08-31 07:16:54

标签: php api curl httpresponse

API集成说明
API需要使用一些输入字段和客户令牌将表单发布到API URL。 API处理然后将响应发布到我的服务器上的callback.php文件(它根据文档修复,我们不能提到我们希望将响应发布到其他文件)。我可以使用该文件中的$ _POST访问发布的val。这就是现有的方法,它运行正常。

现在,我想知道是否有可能通过curl获得整个响应作为curl_exec()函数的返回值?我对卷曲没有经验。

我执行了以下代码: -

$ch = curl_init(API_URL);
$encoded = '';
$_postArray['customer_token'] = API_CUSTOMER_TOKEN;

foreach($_postArray as $name => $value) 
{
     $encoded .= urlencode($name).'='.urlencode($value).'&';
}

// chop off last ampersand
$encoded = substr($encoded, 0, strlen($encoded)-1);
curl_setopt($ch, CURLOPT_HEADER, 0);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_POSTFIELDS,  $encoded);
$resp = curl_exec($ch);
curl_close($ch);
echo $resp;

没有回应,但如果我注释掉curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);行,则$ resp值会像我预期的那样回应1而不是数组($ _POST)。这是否意味着已经检测到API的成功处理?

如果这是不可能的,请告诉我如何修改上面的内容,至少得到callback.php文件中的响应,就像之前发生的$ _POST一样。

更多当前状态和我想要的内容
我希望得到响应作为curl_exec()的返回值,以便我可以使用ajax响应将前端页面重定向到成功页面(我想通过ajax在前端表单提交时调用curl发布保持同一页面显示,直到来自API的响应)。

目前我通过隐藏的iframe发布API表单(以继续显示相同页面),启动javascript计数器以检测会话['api_success']变量,并设置会话['api_success']来实现此目的在callback.php文件中(从API成功响应后)。我想丢弃该方法,因为它可以打破任何时间,它在linux firefox 2中失败。

更新
同意使用这种异步API,没有其他选择,只能进行频繁轮询以设置状态标志。所以,请帮我修改上面的代码,以便在回调文件中接收响应。目前它还没有到来。

谢谢, Sandeepan

1 个答案:

答案 0 :(得分:0)

  

现在,我想知道是否可以通过curl将整个响应作为curl_exec()函数的返回值?

我不知道您正在谈论的API,但很可能不是。 API可能会启动后台进程,在完成后触发回调。在这种设置中,原始请求不会收到返回值。