为什么wget POST会给出400 Bad Request?

时间:2016-06-02 13:29:53

标签: json rest unix curl wget

我正在尝试使用wget将.json文件使用REST api发布到站点。具体来说,我试图从我的命令行在JIRA中创建一个问题。我知道最简单的方法是使用cURL;但是,Solaris'本机编译器在7.49.0之前的cURL版本存在问题,因此我无法通过https进行连接,这是一项要求,我无法更新cURL,因为我正在公司计算机上工作。

每次我尝试使用wget进行POST时,都会收到错误:400 Bad Request。在我看来,通常这是我试图发送的json的一个问题,但我不能为我的生活弄清楚什么是错的。

操作系统:Solaris 10 版本:wget 1.9.1

命令:

wget --post-file=data.json --http-user=[userID] --http-passwd=[userPass] --header="Content-Type: application/json" -i "uri.txt"

data.json:

    {
        "fields": {
            "project":
            { 
                "id": "10200"
            },
            "summary": "Creating issue remotely.",
            "description": "Creating of an issue using project keys and issue type names using the REST API",
            "issuetype": {
                "name": "Story"
            },
            "customfield_11600": {
                "id": "11303"
            }
        }
    }

更新 当我发出我的http POST时,我认为我的标题不正确。在上面的wget命令中,我将Content-Type设置为application / json;但是,查看调试信息,我的标题中有两个Content-Type空格。

Content-Type: application/x-www-form-urlencoded
Content-Length: 175
Content-Type: application/json

可能是因为我错误地设置了我的内容类型而且发送的邮件是使用错误的编码发送的吗?

更新2

我认为我已将上述更新排除在外,因为删除application / json content-type会出现415 Unsupported Media Type错误,这意味着添加它会使POST发送正确的媒体类型。

我已经获得了一个curl命令,可以在我的Windows机器上正常工作,并且当wget通过http1.0连接时它会自动通过http1.1连接,我相信当通过http1.0连接时,会附加正在发送的数据在URI的末尾。这可能是服务器认为json不正确的原因吗?

0 个答案:

没有答案