2016-08-13 5 views
0

Jira API 2とPowerShell 5の使用Invoke-RestMethod GETを正常に実行できますが、プロジェクトでPOSTメソッドを試してみると、(400) Bad Requestが表示され続けます。Jira APIのPOSTとInvoke-RestMethod

$user = [System.Text.Encoding]::UTF8.GetBytes("me:mypassword") 
$headers = @{Authorization = "Basic " + [System.Convert]::ToBase64String($user)} 
$data = Get-Content D:\scripts\powershell\issue.txt 

Invoke-RestMethod -Uri "https://agile.mycompany.com/rest/api/2/issue/" -Method POST -Headers $headers -ContentType "application/json" -Body $data 

$data変数はJiraのための整形JSONです:

{ 
    "fields": 
    { 
     "project":{"Key": "ITS"}, 
     "summary":"Rest Test 1", 
     "issuetype":{"name": "Task"}, 
     "assignee":{"key": "myusername"}, 
     "priority":{"id": "3"}, 
     "description": 
      "||Host Name||IP Address||Comments|| 
      |some-pc|192.168.1.1| |", 
     "duedate": "2016-09-11" 
    } 
} 

は私がプロジェクトオーナーです、これは権限の問題ではありません。

+0

コードはよく見えます。サーバーログにアクセスできますか?彼らはこれについて何を言いますか? 'Invoke-RestMethod'の代わりに' curl'を使ってみましたか? Fiddlerでは要求が同じに見えますか? –

+0

Ansgar、私は窓にカールを使ってみました。同じ種類の問題 - GETは動作しますが、POST ...まあ、失敗したり成功したりしません。スクリプトは実行され、成功したり失敗したりすることはありません。私はカールのLinuxボックスでこれを行い、何が起こるか見る。 私は実際にjira-ruby gemを使用しようとしていますが、接続オブジェクトが断続的に失敗してしまい、理由がわかりません。 – Brian

+0

大丈夫です。 centosサーバーでカールを試みました。 「プロジェクト」フィールドに「自己」および「ID」KVペアを追加しましたが、同じエラーが発生しましたすべて3回。 – Brian

答えて

0

問題が解決しました。問題は、私がフィールド名の最初の文字を大文字にしていたことでした。明らかに、JiraはCASEに非常に敏感です。 Trondh - 郵便配達員の使用をお勧めします。郵便配達員が失敗したAPI呼び出しから生成されたエラーは非常に簡潔でした。

0

実際にテキストファイルの各行がその配列内のオブジェクトである文字列の配列になるため、Get-contentは難解です。それを回避するための最良の方法は、おそらく代わりに、ネットのファイルreadメソッドを使用している:

$data = [System.IO.File]::ReadAllText("D:\scripts\powershell\issue.txt")

ところで、あなたは手動でリクエストヘッダを構築するのではなく、通常のPS資格オブジェクトを使用することができます。

郵便配達員などのツールを使用してapiをテストすることは常に重要です。これにより、コードが奇妙なことを心配することなく、有効なjsonを投稿していることを確認できます。

+0

'Get-Content | Out-String'、 'Get-Content-Raw'(PowerShell v3以降)、または変数を二重引用符(' -Body "$ data" ')に入れるだけで同じことができます。しかし、 'Invoke-RestMethod'は一連の行でうまく動作するはずです。また、それが原因でエラーが発生した場合、Linuxの 'curl'呼び出しがうまくいかなければなりません。 –

+0

get-credentialからの通常のPSクレデンシャルがJiraへの認証に失敗しました。リクエストヘッダーを作成する前に試しました。また、(get-contentとは対照的に).NET呼び出しも同じ結果を生成します。 ** Ansgar ** - カール声明の良い呼び出し。私は実際にPSスクリプトとカールステートメントの両方を行った。私は、テキストを1行にまとめて、NP ++によって注入された隠れた\ nまたは\ tに問題が生じる可能性を排除した。テキストファイル。 – Brian

+0

サイドノート - ** Trondh **と** Ansgar ** - 私はあなたの助けのためにあなたの星を与える方法はありますか? – Brian

関連する問題