【发布时间】:2011-04-06 03:05:39
【问题描述】:
API 集成说明
API 需要使用一些输入字段和客户令牌将表单发布到 API URL。 API 处理然后将响应发布到我服务器上的 callback.php 文件(根据文档已修复,我们不能提及我们希望将响应发布到其他文件)。我可以使用该文件中的 $_POST 访问发布的 val。这就是现有方法的全部内容,并且效果很好。
现在,我想知道是否可以通过 curl 获取整个响应作为 curl_exec() 函数的返回值?我对 curl 没有经验。
我执行了以下代码:-
$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)。这个1是否表示检测到API处理成功?
如果这不可能,请告诉我如何修改上述内容,以至少在 callback.php 文件中获得 $_POST 的响应,就像之前发生的那样。
更多关于当前状态和我想要的描述
我想将响应作为 curl_exec() 的返回值,以便我可以使用 ajax 响应将前端中的页面重定向到成功页面(我想通过 ajax 调用 curl 发布从前端保持相同页面的表单提交显示直到来自 API 的响应)。
目前,我通过隐藏 iframe 发布 API 表单(以保持显示同一页面)、启动 javascript 计数器以检测会话 ['api_success'] 变量并设置会话 ['api_success']在 callback.php 文件中(在 API 成功响应之后)。我想放弃该方法,因为它随时可能中断,并且在 linux firefox 2 中失败。
更新
同意使用这种异步 API,除了频繁轮询设置状态标志之外别无选择。所以,请帮我修改上面的代码,以便在回调文件中接收响应。目前还没来。
谢谢, 桑迪潘
【问题讨论】:
标签: php api curl httpresponse