1

我将 AtTask 的 API 与 PHP 和 cURL 一起使用。

有没有办法发布数据而不是将其附加到带有问号的 URL 的末尾?

我知道我可以更改请求名称本身CURLOPT_CUSTOMREQUEST => 'POST',我尝试添加CURLOPT_POST => true

但是,CURLOPT_POSTFIELDS => array('name' => 'Untitled Project')仍然被忽略。

有人用这个工作吗?

4

2 回答 2

0

我刚刚遇到了和你一样的问题。你问这个问题已经有几个月了,但如果你仍然遇到它(或者其他人碰到这堵墙),问题是你需要为 POST/GET 设置正确的 CURL 选项。

对于 GET,您需要将 CURLOPT_HTTPGET 设置为“true”。它只是确保标头对于 AtTask API 服务器的顺序正确。

我刚刚为我对他们的示例 StreamClient 类所做的更改创建了一个 github 存储库。

https://github.com/angrychimp/php-attask

随意使用它或只是从中提取代码。对于您的登录示例,GreenJimmy 的示例是 100% 准确的。对于您的搜索问题,您需要执行以下操作。

$URL = 'https://hub.attask.com/attask/api/v4.0/';
$username = 'admin';
$password = 'pass';

$URL .= "task/search/?sessionID=$sessionID&ID=$taskID";

$ch = curl_init();
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, false);
curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, 30);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_URL, $URL);
curl_setopt($ch, CURLOPT_HTTPGET, true);
$results = curl_exec($ch);
curl_close($ch);

print_r($results);

我的 github 存储库中的 StreamClient 允许将数组用于搜索参数和响应字段。它确实让事情变得容易多了。例如。

require_once('StreamClient.php');
$client = new StreamClient('https://hub.attask.com', '4.0');
$client->login('admin', 'pass');
$records = $client->search('task', array('ID' => $taskID), array('assignedToID:emailAddr','actualWork'));
var_dump($records);
于 2014-05-14T22:52:40.353 回答
0

很确定你需要用 http_build_query() 包装你的 postfields 数组。这是一个适用于我的登录示例(当我输入用户名和密码时):

$URL = 'https://hub.attask.com/attask/api/login';
$username = 'admin';
$password = 'user';

$ch = curl_init();
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, false);
curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, 30);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_URL, $URL);
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_POSTFIELDS, http_build_query(array(
    'username'=>$username,
    'password'=>$password
)));
$results = curl_exec($ch);
curl_close($ch);

print_r($results);

希望有帮助。

于 2014-01-06T20:29:19.670 回答