K S*_*t X 5 powershell json curl github graphql
我正在尝试Graphql通过 powershell与api进行通信。根据 Github 的说法,必须首先进行以下curl调用。
curl -H "Authorization: bearer token" -X POST -d " \
{ \
\"query\": \"query { viewer { login }}\" \
} \
" https://api.github.com/graphql
Run Code Online (Sandbox Code Playgroud)
使用GitHub Enterprise,在 powershell 上,我执行以下调用:
$url = "http://github.company.com/api/graphql" # note that it's http, not https
$body = "`"query`":`"query { viewer { login }}`"" #`
$headers = New-Object "System.Collections.Generic.Dictionary[[String],[String]]"
$headers.Add("content-type","application/json")
$headers.Add("Authorization","bearer myTokenNumber")
$response = Invoke-WebRequest -Uri $url -Method POST -Body $body -Headers $headers
Run Code Online (Sandbox Code Playgroud)
我不断收到相同的错误消息,解析 JSON 时出现问题。
我认为错误出在body标签上,但我看不出是怎么回事。
echo $body 给 "query":"query { viewer { login }}"
这里有什么问题?
确切的错误信息:
Invoke-WebRequest : {"message":"Problems parsing JSON","documentation_url":"https://developer.github.com/v3"}
At line:1 char:13
+ $response = Invoke-WebRequest -Uri $url -Method POST -Body $body -Headers $heade ...
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ CategoryInfo : InvalidOperation: (System.Net.HttpWebRequest:HttpWebRequest) [Invoke-WebRequest], WebExc
eption
+ FullyQualifiedErrorId : WebCmdletWebResponseException,Microsoft.PowerShell.Commands.InvokeWebRequestCommand
Run Code Online (Sandbox Code Playgroud)
您的$body值是格式错误的 JSON,因为它缺少封闭的{ ... }.
使用here-string可以更轻松地构建JSON字符串:
$body = @'
{ "query": "query { viewer { login } }" }
'@
Run Code Online (Sandbox Code Playgroud)
同样,您可以使用哈希表文字简化构建标头:
$headers = @{
"content-type" = "application/json"
"Authorization" = "bearer myTokenNumber"
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2171 次 |
| 最近记录: |