CURL要发布到JIRA

时间:2016-07-10 07:42:18

标签: json post curl jira

我在Windows机器的powershell中使用curl命令。我正在尝试在JIRA中创建一个我在本地安装的问题。我试过跟随,但它引发了我的错误。有人能让我知道我错过了什么,以及如何解决它?

PS C:\Users\raji> **curl -D- -u raji:raji -X POST --data $parse.json -H    
"Content-Type: application/json" http://localhost:8080/rest/api/2/issue**

*curl: (6) Could not resolve host: Content-Type
HTTP/1.1 415 Unsupported Media Type

Server: Apache-Coyote/1.1
X-AREQUESTID: 770x749x1
X-ASEN: SEN-L8183526
Set-Cookie: JSESSIONID=D0B4391C94413FDDB1291C419F3E1360; Path=/; HttpOnly
X-Seraph-LoginReason: OK
Set-Cookie: atlassian.xsrf.token=B3EL-GHY4-P1TP-IMD0|d3d735e0a6566f8a97f99c96e80042551def3192|lin; Path=/
X-ASESSIONID: 1v4terf
X-AUSERNAME: raji
X-Content-Type-Options: nosniff
Content-Type: text/html;charset=UTF-8
Content-Length: 0
Date: Sun, 10 Jul 2016 07:20:36 GMT
*

当我尝试关注时,我收到此错误:

PS C:\Users\raji> **curl -D- -u raji:raji -X POST --data @parse.json -H 
"Content-Type: application/json" http://localhost:8080/rest/api/2/issue**

*At line:1 char:38
+ curl -D- -u raji:raji -X POST --data @parse.json -H "Content-Type: ap ...
+                                      ~~~~~~
The splatting operator '@' cannot be used to reference variables in an expression. '@parse' can be used only as an argument to a command. To reference variables in an expression use '$parse'.
+ CategoryInfo          : ParserError: (:) [], ParentContainsErrorRecordException
+ FullyQualifiedErrorId : SplattingNotPermitted*

因此我在文件名中尝试了$ @的实例。

"parse.json"文件包含以下内容:

{
    "fields": {
       "project":
       { 
          "key": "Demo"
       },
       "summary": "REST ye merry gentlemen",
       "description": "Creating of an issue using project keys and issue type names using the REST API",
       "issuetype": {
          "name": "Bug"
       }
   }
}

由于这是windows机器,我也尝试在parse.json文件中使用斜杠(/)(在少数帖子中看到/将删除错误)但这也没有帮助。有人可以让我知道如何解决这个问题吗?

1 个答案:

答案 0 :(得分:1)

在第一种情况下

curl -D- -u raji:raji -X POST --data $parse.json -H "Content-Type: application/json" http://localhost:8080/rest/api/2/issue
powershell将{p> $parse解释为变量$parse.json,作为变量json的属性$parse,它不存在,因此执行的命令将是

curl -D- -u raji:raji -X POST --data -H "Content-Type: application/json" http://localhost:8080/rest/api/2/issue

数据为-H,内容类型标头被解释为要访问的网址。

在第二种情况下,powershell中的@被解释为splat operator,如果你想要一个文字@(由curl而不是由PowerShell编写),只需引用字符串:

curl -D- -u raji:raji -X POST --data "@parse.json" -H "Content-Type: application/json" http://localhost:8080/rest/api/2/issue

现在它应该使用文件parse.json的内容作为数据。