【问题标题】:I'm trying to make a php Curl call to formstack api, but I get nothing我正在尝试对 formstack api 进行 php Curl 调用,但我什么也没得到
【发布时间】:2012-10-16 15:10:18
【问题描述】:

这是我的第一个 curls 代码,所以可能会出错

我正在尝试调用 form/:id/submissions https://www.formstack.com/developers/api/resources/submission#form/:id/submission_GET

如果我加载:

https://www.formstack.com/api/v2/form/1311091/submission.json?oauth_token=abc&min_time=2012-09-01%2000:01:01&max_time=2012-10-27%2000:01:01

如果效果很好。

如果我试试这个代码:

 <?php    
 $host = 'https://www.formstack.com/api/v2/';

  // TODO this should manage dinamics values or build an action in every method. 
  $action = 'form/1311091/submission.json';

  $url = $host . $action;

  // TODO this values will arrive like an array with values
    $postData['oauth_token']= 'abc';
    $postData['min_time'] ='2012-09-01 00:01:01';
    $postData['max_time'] ='2012-10-27 00:01:01';

// TODO make a method with this action
function getElements($postData)
{

    $elements = array();  
    foreach ($postData as $name=>$value) {  
       $elements[] = "{$name}=".urlencode($value);  
    } 
}


  $curl = curl_init();
  curl_setopt($curl, CURLOPT_URL, $url);
  curl_setopt($curl, CURLOPT_HTTPGET, true);
  curl_setopt($curl, CURLOPT_POSTFIELDS, $elements);
  $result =  curl_exec($curl) ;
  curl_close($curl);
  var_dump($result);
?>

【问题讨论】:

  • Formstack 开发人员在这里。不要将您的 access_token 放在公共场所!

标签: php api curl formstack


【解决方案1】:

您需要设置:

curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);

如果您希望取回数据,可以作为 curl_exec() 之前的一个选项。

CURLOPT_RETURNTRANSFER: TRUE 将传输作为字符串返回 curl_exec() 的返回值,而不是直接输出。

另外,您为什么尝试通过 GET 请求发送 POST 数据?

CURLOPT_POSTFIELDS:要在 HTTP“POST”操作中发布的完整数据。

另外,为了调试,你应该检查一下:

echo curl_error ( $curl );

【讨论】:

  • 谢谢韦恩。我使用Postfields是因为“?”后面的信息,我认为这个选项应该是通过Postfields。我必须给出url中的所有元素?
【解决方案2】:

这对我有用:

<?php
$host = 'https://www.formstack.com/api/v2/';
$action = 'form/1311091/submission.json';

$url = $host . $action;

$postData = array();
$postData['oauth_token']= 'REPLACE_WITH_TOKEN';
$postData['min_time'] ='2012-09-01 00:01:01';
$postData['max_time'] ='2012-10-27 00:01:01';

$curl = curl_init();
curl_setopt($curl, CURLOPT_URL, $url);
curl_setopt($curl, CURLOPT_POST, 1);
curl_setopt($curl, CURLOPT_POSTFIELDS, $postData);
$result =  curl_exec($curl);
curl_close($curl);

var_dump($result);
?>

【讨论】:

  • 谢谢布兰登,我收到这条消息:{"id":"84948981","message":" 表单提交成功。","timestamp":"2012- 10-26 10:52:44","user_agent":"","re​​mote_addr":"91.121.16.103","payment_status":"","form":"1311091","data":[]," pretty_field_id":"17286794"}bool(true) 我复制/粘贴你的代码。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2020-01-28
  • 1970-01-01
  • 1970-01-01
  • 2019-03-27
  • 2016-11-17
  • 1970-01-01
  • 2022-11-29
相关资源
最近更新 更多