Obtenez de l'API de la valeur de l'JSON retourné dans un HttpResponseMessage
J'ai créé un Contrôleur et de la méthode que j'utilise pour obtenir des données à partir d'une API.
J'utilise HttpResponseMessage
pour obtenir la réponse. Tout fonctionne bien mais je ne peux pas obtenir exactement les données que je veux au format JSON.
La méthode se présente comme suit:
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();
}
}
La réponse que je reçois est:
{
"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
}
Mais normalement, l'API renvoie cette valeur (xml
format):
<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>
Comment puis-je extraire ces valeurs à partir de la demande d'API.Si j'exécute les "RequestUri"
à partir de l'API de réponse que je reçois les données exactes.
Ce qui me manque?
Vous ne voulez pas serialise la totalité de la réponse, juste le
Vous pouvez essayer de stackoverflow.com/a/15936272/423105
Quand j'ai utiliser la réponse.Contenu-je obtenir cette valeur: {"Headers":[{"Key":"Content-Length","Value":["359"]},{"Key":"Content-Type","Value":["application/json; charset=utf-8"]},{"Key":"Expire","Valeur":["-1"]}]}
Vous êtes de retour de l'intégralité de la réponse HTTP à partir de l'API. Que voulez-vous faire avec de la réponse XML, exactement? Convertir en JSON et retour?
Oui, exactement.
response.Content
. C'est nul dans ce cas, apparemment, de sorte que quelque chose doit être mal aussi...Vous pouvez essayer de stackoverflow.com/a/15936272/423105
Quand j'ai utiliser la réponse.Contenu-je obtenir cette valeur: {"Headers":[{"Key":"Content-Length","Value":["359"]},{"Key":"Content-Type","Value":["application/json; charset=utf-8"]},{"Key":"Expire","Valeur":["-1"]}]}
Vous êtes de retour de l'intégralité de la réponse HTTP à partir de l'API. Que voulez-vous faire avec de la réponse XML, exactement? Convertir en JSON et retour?
Oui, exactement.
OriginalL'auteur eg16 | 2016-07-21
Vous devez vous connecter pour publier un commentaire.
Vous avez besoin d'extraire le corps de la réponse et de retour que
Ici est une autre option à l'aide de
ExpandoObject
.Vous ne savez pas que pour un fait. Les en-têtes de requête, demandant JSON.
Oh c'est vrai, je n'ai pas lu les OP sont sérialisées HTTP de la réponse, j'ai seulement regardé l'exemple XML.
Je crois que le xml est juste une représentation des données retournées. L'en-tête dit qu'il est de retour json.
Les données que je reçois aujourd'hui les bonnes données, mais le format n'est pas bon: "{\"License\":{\"New\":{\"Quantity\":50.0,\"UnitAmount\":8.0,\"Amount\":400.0},\"Existing\":{\"Quantity\":0.0,\"UnitAmount\":0.0,\"Amount\":0.0},\"Result\":{\"Quantity\":50.0,\"UnitAmount\":8.0,\"Amount\":400.0}},\"ContractPerYear\":null,\"ContractMonth\":null,\"ContractDay\":null,\"Contract\":null,\"ExistingLicenseDiscount\":null,\"ContractDiscount\":null,\"PartnerDiscount\":null,\"Discount\":null}"
OriginalL'auteur Nkosi