2016-07-12 94 views
0

我正在嘗試使用Perl在Asana中創建任務。我使用以下模塊:使用Perl創建Asana任務

  • WWW ::捲曲::簡單
  • JSON
  • HTTP請求::

這裏是我的代碼。

my %data = (
    "data" => { 
     "workspace" => "##########", #$config->get('asana/workspace_id'), 
     "name" => "system error", 
     "assignee" => "me", 
     "projects" => "##########", 
    }, 
); 
my @header = ('Authorization' => 'Bearer '.$personal_access_token)); 
my $curl = WWW::Curl::Simple->new(); 
my $uri = $config->get('asana/api_uri'); 
my $content = JSON->new->utf8->encode(\%data); 
my $r = HTTP::Request->new(
    'POST', 
    $uri, 
    \@header, 
    $content 
); 
my $res = $curl->request($r); 

當我打印$ content變量時,它看起來像這樣。

{"data":{"workspace":"##########","name":"CBC FZDS Billing - System Error"}} 

當我打印$ r變量作爲字符串時,它看起來像這樣。 (「個人訪問令牌」顯示我的,我所提供的個人訪問令牌。)

POST https://app.asana.com/api/1.0/tasks 
Authorization: Bearer <personal access token> 

{"data":{"workspace":"##########","name":"CBC FZDS Billing - System Error"}} 

$res->content結果是:

'{"errors":[{"message":"missing `workspace` field, and no `parent` or `projects` specified","help":"For more information on API status codes and how to handle them, read the docs on errors: https://asana.com/developers/documentation/getting-started/errors"}]}' 

任何想法,爲什麼這表明該工作區字段缺少?

+1

從示例中看起來像頂部您擁有的級別「數據」鍵是不必要的:https://asana.com/developers/api-reference/tasks#create –

+0

@HunterMcMillen:感謝您的回覆。這裏是$ content變量。 {「workspace」:「#######」,「name」:「System Error」} 這裏是$ r變量。 POST https://app.asana.com/api/1.0/tasks 授權:承載<個人訪問令牌> {「workspace」:「#######」,「name」:「系統錯誤「} 我從$ res-> content得到相同的結果。 其他建議? –

回答

0

它看起來像我需要將內容類型頭設置爲「application/json」,因爲您將數據作爲json發送。

爲了幫助您調試將來的問題,您可以在命令行嘗試我們的curl。 在這種特殊情況下,您會注意到,如果您添加-H「Content-Type:application/json」,它會起作用,如果您將其忽略掉,則會出現相同的錯誤。 (作品) curl -H「授權:持有人」 -X POST「https://app.asana.com/api/1.0/tasks」-d「{\」data \「:{\」workspace \「:ZZZZZZZ,\」name \「:\」test \「}}」-H「Content-Type:application/json」 (不工作) curl -H「授權:持有人???? -X POST「https://app.asana.com/api/1.0/tasks」-d「{\」data \「:{\」workspace \「:ZZZZZZZ,\」name \「:\」test \「}}」

+0

啊!除了將內容設置爲具有頂級「數據」元素之外,還有效。謝謝! –

+0

真棒,很高興它幫助! – Mark

相關問題