我创建了一个控制器和方法,用于从API获取数据。
我使用 HttpResponseMessage
来获取响应。一切都正常,但我无法以 JSON 格式获取我想要的确切数据。
该方法如下:
public class TestController : ApiController
{
[HttpGet]
public async Task<IHttpActionResult> TestMethod(...)
{
string _apiUrl = String.Format("...");
string _baseAddress = "...";
using (var client = new HttpClient())
{
client.BaseAddress = new Uri(_baseAddress);
client.DefaultRequestHeaders.Accept.Clear();
client.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue("application/json"));
HttpResponseMessage response = await client.GetAsync(_apiUrl);
if (response.IsSuccessStatusCode)
{
return Json(response);
}
}
return NotFound();
}
}
The response i get looks like:
{
"Version": {
"Major": 1,
"Minor": 1,
"Build": -1,
"Revision": -1,
"MajorRevision": -1,
"MinorRevision": -1
},
"Content": {
"Headers": [
{
"Key": "Content-Length",
"Value": [
"359"
]
},
{
"Key": "Content-Type",
"Value": [
"application/json; charset=utf-8"
]
},
{
"Key": "Expires",
"Value": [
"-1"
]
}
]
},
"StatusCode": 200,
"ReasonPhrase": "OK",
"Headers": [
{
"Key": "Pragma",
"Value": [
"no-cache"
]
},
{
"Key": "X-SourceFiles",
"Value": ["..."
]
},
{
"Key": "Cache-Control",
"Value": [
"no-cache"
]
},
{
"Key": "Date",
"Value": [
"Thu, 21 Jul 2016 13:25:54 GMT"
]
},
{
"Key": "Server",
"Value": [
"Microsoft-IIS/10.0"
]
},
{
"Key": "X-AspNet-Version",
"Value": [
"4.0.30319"
]
},
{
"Key": "X-Powered-By",
"Value": [
"ASP.NET"
]
}
],
"RequestMessage": {
"Version": {
"Major": 1,
"Minor": 1,
"Build": -1,
"Revision": -1,
"MajorRevision": -1,
"MinorRevision": -1
},
"Content": null,
"Method": {
"Method": "GET"
},
"RequestUri": "...",
"Headers": [
{
"Key": "Accept",
"Value": [
"application/json"
]
}
],
"Properties": {}
},
"IsSuccessStatusCode": true
}
但通常情况下,API 会返回这个值(
xml
格式):<License>
<Existing>
<Amount>0</Amount>
<Quantity>0</Quantity>
<UnitAmount>0</UnitAmount>
</Existing>
<New>
<Amount>400</Amount>
<Quantity>50</Quantity>
<UnitAmount>8</UnitAmount>
</New>
<Result>
<Amount>400</Amount>
<Quantity>50</Quantity>
<UnitAmount>8</UnitAmount>
</Result>
</License>
<PartnerDiscount i:nil="true"/>
</CalculatorResult>
如何从API请求中提取这些值。如果我执行API响应中的"RequestUri"
,我可以得到精确的数据。
我错过了什么吗?
response.Content
。但在这种情况下它是空的,显然还有其他问题... - Charles Mager