需要获得必要的http帖子

时间:2017-01-17 22:07:29

标签: api powershell http

我正在按照Huddle Api说明获取访问令牌。我使用powershell发布方法如下:

POST /token HTTP/1.1
Host: login.huddle.net
Content-Type: application/x-www-form-urlencoded

grant_type=authorization_code&client_id=s6BhdRkqt&redirect_uri=MyAppServer.com/receiveAuthCode&code=i1WsRn1uB1

我使用的Powershell命令是:

$body = { '@grant_type' = 'authorization_code'; client_id = 'xxxxx';
           redirect_uri = 'myAppServer.com'; code = '123abcdef' } 

Invoke-WebRequest -Uri "login.huddle.com" -ContentType "application/x-www-form-urlencoded" -Method Post

这有效,我得到“200 OK”的响应,并且还显示了Access Token的激活。我如何检索访问令牌号码。例如,我需要在指令中提到的输出:

HTTP/1.1 200 OK
Content-Type: application/json
Cache-Control: no-store

{
 "access_token":"S1AV32hkKG",
 "expires_in":300,
 "refresh_token":"8xLOxBtZp8"
}

我认为它有一些事情要做ContentType。所以我尝试了“application / Json”,但那不是它。有什么建议?

2 个答案:

答案 0 :(得分:1)

您使用的是错误的cmdlet。因为你提到了返回StatusCode,Content,RawContent等的值,它告诉我们你正在使用Invoke-WebRequest。这个cmdts很棒......但不适用于API,这些API通常是REST格式并使用JSON。 IWR可以处理请求,但您必须深入了解$Response.Content并转换为JSON。

尝试使用Invoke-RestMethod而不是Invoke-WebRequest。您可能正在返回AccessCode,但作为JSON格式的属性。 Invoke-RestMethod将本机解析并将JSON转换为PowerShell对象。您可以将其分入Invoke-WebRequest,它应该正常工作

Invoke-RestMethod -Uri "login.huddle.com" -ContentType "application/x-www-form-urlencoded" -Method Post -body $body

答案 1 :(得分:0)

如果使用Invoke-RestMethod,您可以在拨打电话时设置响应

$response = Invoke-RestMethod -Uri "login.huddle.com" -ContentType "application/x-www-form-urlencoded" -Method Post"

然后$response.access_token$response.expires_in$response.refresh_token