查看 HttpClient.PostAsync 的回复 body
View response body for HttpClient.PostAsync
我在 Postman 中使用 POST 生成以下卷曲:
curl --location --request POST 'https://authqa.cqi.newry.me.com/as/token.oauth2' \
--header 'Authorization: Basic QVBJX0JURUNSRUZEQVRBOlAzNkNEAAE3RVdGUzRPT0NLQlQ0SERaS1pGRTZHTksyQkNJTFVJWT0=' \
--header 'Content-Type: application/x-www-form-urlencoded' \
--header 'Cookie: PF=mgvtuOC0jyPx3Lbrmw1hTX; BIGipServerauthqa-9031=1948242442.18211.0000' \
--data-urlencode 'grant_type=client_credentials' \
--data-urlencode 'charset=utf-8'
它returns以下body:
{
"access_token": "generated_token",
"token_type": "Bearer",
"expires_in": 1799
}
我正在尝试使用 HttpClient
在 C# 中执行等效操作。
这是完成 POST 的地方:
var body = new StringContent("grant_type=client_credentials", Encoding.UTF8,
"application/x-www-form-urlencoded");
var httpResponseMessage = await _client.PostAsync("sa/token.oauth2", body);
我用 httpResponseMessage.ToString()
得到以下结果。
StatusCode: 200, ReasonPhrase: 'OK', Version: 1.1, Content: System.Net.Http.HttpConnectionResponseContent, Headers:
{
Date: Sun, 17 Jan 2021 21:19:39 GMT
X-Frame-Options: SAMEORIGIN
Strict-Transport-Security: max-age=31536000
Content-Security-Policy: frame-ancestors *.cmegroup.com *.chicago.cme.com
X-XSS-Protection: 1;mode=block
Cache-Control: no-store, no-cache
Pragma: no-cache
Set-Cookie: PF=4sugakrnEHwY5zWIXYasGo;Path=/;Secure;HttpOnly;SameSite=None
Set-Cookie: BIGipServerauthqa-9031=1897910794.18211.0000; path=/; Httponly; Secure
Transfer-Encoding: chunked
Expires: Thu, 01 Jan 1970 00:00:00 GMT
Content-Type: application/json; charset=utf-8
}
我看不到上面发布的回复 body,但我怀疑是 Content: System.Net.Http.HttpConnectionResponseContent
。虽然不知道怎么看。任何人body 都可以告诉我如何看待上述 body 吗?
httpResponseMessage.Content.ReadAsStringAsync().Result
会输出我想要的但它正在阻塞。
var response = await client.PostAsync("sa/token.oauth2", body);
var content = await response.Content.ReadAsStringAsync();
请注意,您通常应该使用 await
- 而不是 .Result
。
见
HttpClientResponse 包含内容,您可以这样阅读:
var body = new StringContent("grant_type=client_credentials", Encoding.UTF8,
"application/x-www-form-urlencoded");
var httpResponseMessage = await _client.PostAsync("sa/token.oauth2", body);
var responseContent = await httpResponseMessage.Content.ReadAsStringAsync(); // here you can read content as string
...
另请查看 here 了解更多信息。
我在 Postman 中使用 POST 生成以下卷曲:
curl --location --request POST 'https://authqa.cqi.newry.me.com/as/token.oauth2' \
--header 'Authorization: Basic QVBJX0JURUNSRUZEQVRBOlAzNkNEAAE3RVdGUzRPT0NLQlQ0SERaS1pGRTZHTksyQkNJTFVJWT0=' \
--header 'Content-Type: application/x-www-form-urlencoded' \
--header 'Cookie: PF=mgvtuOC0jyPx3Lbrmw1hTX; BIGipServerauthqa-9031=1948242442.18211.0000' \
--data-urlencode 'grant_type=client_credentials' \
--data-urlencode 'charset=utf-8'
它returns以下body:
{
"access_token": "generated_token",
"token_type": "Bearer",
"expires_in": 1799
}
我正在尝试使用 HttpClient
在 C# 中执行等效操作。
这是完成 POST 的地方:
var body = new StringContent("grant_type=client_credentials", Encoding.UTF8,
"application/x-www-form-urlencoded");
var httpResponseMessage = await _client.PostAsync("sa/token.oauth2", body);
我用 httpResponseMessage.ToString()
得到以下结果。
StatusCode: 200, ReasonPhrase: 'OK', Version: 1.1, Content: System.Net.Http.HttpConnectionResponseContent, Headers:
{
Date: Sun, 17 Jan 2021 21:19:39 GMT
X-Frame-Options: SAMEORIGIN
Strict-Transport-Security: max-age=31536000
Content-Security-Policy: frame-ancestors *.cmegroup.com *.chicago.cme.com
X-XSS-Protection: 1;mode=block
Cache-Control: no-store, no-cache
Pragma: no-cache
Set-Cookie: PF=4sugakrnEHwY5zWIXYasGo;Path=/;Secure;HttpOnly;SameSite=None
Set-Cookie: BIGipServerauthqa-9031=1897910794.18211.0000; path=/; Httponly; Secure
Transfer-Encoding: chunked
Expires: Thu, 01 Jan 1970 00:00:00 GMT
Content-Type: application/json; charset=utf-8
}
我看不到上面发布的回复 body,但我怀疑是 Content: System.Net.Http.HttpConnectionResponseContent
。虽然不知道怎么看。任何人body 都可以告诉我如何看待上述 body 吗?
httpResponseMessage.Content.ReadAsStringAsync().Result
会输出我想要的但它正在阻塞。
var response = await client.PostAsync("sa/token.oauth2", body);
var content = await response.Content.ReadAsStringAsync();
请注意,您通常应该使用 await
- 而不是 .Result
。
见
HttpClientResponse 包含内容,您可以这样阅读:
var body = new StringContent("grant_type=client_credentials", Encoding.UTF8,
"application/x-www-form-urlencoded");
var httpResponseMessage = await _client.PostAsync("sa/token.oauth2", body);
var responseContent = await httpResponseMessage.Content.ReadAsStringAsync(); // here you can read content as string
...
另请查看 here 了解更多信息。