J'essaie de POSTER une JsonObject
utilisation à HttpClient
partir de l'API Web. Je ne suis pas sûr de savoir comment procéder et je ne trouve pas grand-chose dans l'exemple de code.
Voici ce que j'ai jusqu'à présent:
var myObject = (dynamic)new JsonObject();
myObject.Data = "some data";
myObject.Data2 = "some more data";
HttpClient httpClient = new HttpClient("myurl");
httpClient.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue("application/json"));
HttpResponseMessage response = httpClient.Post("", ???);
Je pense que j'ai besoin de me lancer en JsonObject
tant que StreamContent
mais je suis accroché à cette étape.
c#
asp.net
wcf
asp.net-web-api
wcf-web-api
marque
la source
la source
using
comme j'étais: aspnetmonsters.com/2016/08/2016-08-27-httpclientwrongusing
autour de laStringContent
création cependant.var content = new StringContent(jsonObject.ToString(), Encoding.UTF8, "application/json")
je devais réglercontent.Headers.ContentType = new MediaTypeHeaderValue("application/json");
. Voir la réponse ci-dessous pour plus de détails.La manière la plus simple consiste à utiliser a
StringContent
, avec la représentation JSON de votre objet JSON.la source
Selon votre version .NET, vous pouvez également utiliser la
HttpClientExtensions.PostAsJsonAsync
méthode.https://msdn.microsoft.com/en-us/library/system.net.http.httpclientextensions.postasjsonasync.aspx
la source
Si vous utilisez Newtonsoft.Json:
Exemple:
la source
JsonConvert.SerializeObject
problèmes avec DateTimes ISO 8601 Type: Local ou UTC ... hackered.co.uk/articles/…Je n'ai pas assez de réputation pour ajouter un commentaire sur la réponse de Pomber donc je poste une autre réponse. En utilisant l'approche de pomber, j'ai continué à recevoir une réponse "400 Bad Request" d'une API à laquelle je POSTAISais ma demande JSON (Visual Studio 2017, .NET 4.6.2). Finalement, le problème a été attribué à l'en-tête "Content-Type" produit par StringContent () étant incorrect (voir https://github.com/dotnet/corefx/issues/7864 ).
tl; dr
Utilisez la réponse du bombardier avec une ligne supplémentaire pour définir correctement l'en-tête de la demande:
la source
"application/json"
dans leStringContent
constructeur n'est probablement pas nécessaire car il est explicitement défini sur lacontent.Headers.ContentType
propriété résultante . Cependant, je n'ai pas testé cela dans le code.application/json; charset=utf-8
.le code dessus dans vbnet:
J'espère que cette aide
la source