首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用curl时,Github API出现错误“解析JSON时出现问题”,但与Postman配合使用时效果良好

使用curl时,Github API出现错误“解析JSON时出现问题”,但与Postman配合使用时效果良好
EN

Stack Overflow用户
提问于 2020-04-03 17:40:44
回答 3查看 781关注 0票数 0

我正在尝试使用Github的API创建一个版本。

我的请求在Postman中工作得很好,但无论我尝试什么,它总是在curl中失败,包括如果我只是使用Postman将我的Postman请求转换为curl。

这是我的邮递员POST请求的正文:

代码语言:javascript
复制
{
    "tag_name": "4.2.0",
    "target_commitish": "master",
    "name": "4.2.0",
    "body": "test"
}

我已经包含了一个"Basic“类型的授权头,我在其中输入了我的用户名和我为此创建的令牌。

我正在对https://api.github.com/repos/<myUsername>/<myRepo>/releases执行请求。

正如我所说的-它工作得很好,但当我将它转换成curl时,我得到了错误“解析JSON的问题”。

翻译后的curl命令为:

代码语言:javascript
复制
curl --location --request POST 'https://api.github.com/repos/<myUsername>/<myRepo>/releases' \
--header 'Authorization: Basic <someHashOrSomething>' \
--header 'Content-Type: application/json' \
--data-raw '{
    "tag_name": "4.2.0",
    "target_commitish": "master",
    "name": "4.2.0",
    "body": "test"
}'

我将其重新格式化为curl --location --request POST 'https://api.github.com/repos/<myUsername>/<myRepo>/releases' --header 'Authorization: Basic <someHashOrSomething>' --header 'Content-Type: application/json' --data-raw '{ "tag_name": "4.2.0", "target_commitish": "master", "name": "4.2.0", "body": "test"}',使其在一行上。

我也尝试过(因为只需要"tag_name“参数):

curl -i -H 'Authorization: token <myToken>' -d '{"tag_name":"4.2.0"}' https://api.github.com/repos/<myUsername>/<myRepo>/releases

curl -i -H 'Authorization: token <myToken>' -d '{"tag_name":"4.2.0"}' https://api.github.com/repos/<myUsername>/<myRepo>/releases --header Content-Type:application/json

curl -d '{"tag_name":"4.2.0"}' -u <myUsername>:<myToken> https://api.github.com/repos/<myUsername>/<myRepo>/releases --header "Content-Type:application/json"

curl -d "tag_name=4.2.0" -u <myUsername>:<myToken> https://api.github.com/repos/<myUsername>/<myRepo>/releases --header "Content-Type:application/json"

每个curl请求都会失败,并出现"Problems parsing JSON“错误。

EN

回答 3

Stack Overflow用户

发布于 2020-07-02 16:26:34

如果从windows cmd提示符执行此操作,则需要更改

代码语言:javascript
复制
--data-raw '{   "tag_name": "4.2.0",    "target_commitish": "master",   "name": "4.2.0",    "body": "test"}'

代码语言:javascript
复制
--data-raw "{   \"tag_name\": \"4.2.0\",    \"target_commitish\": \"master\",   \"name\": \"4.2.0\",    \"body\": \"test\"}"

cmd提示符似乎不像数据的单引号。

票数 2
EN

Stack Overflow用户

发布于 2020-04-12 00:36:34

问题可能出在API密钥上。

检查它是否有足够的权限,或者尝试创建一个新的权限。

票数 0
EN

Stack Overflow用户

发布于 2022-02-16 15:32:05

如何调试:

  • 将"-v --

-ascii -“添加到curl命令以查看命令的日志。

  • 在cmd或PowerShell

中对数据使用echo或write-host

请记住,确保curl接收有效的JSON数据非常重要。

查看Powershell here的示例

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/61009023

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档