Я пытаюсь опубликовать JsonObject
использование HttpClient
из веб-API. Я не совсем уверен, как это сделать, и не могу найти много примеров кода.
Вот что у меня так далеко:
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("", ???);
Я думаю, что мне нужно сыграть свою JsonObject
роль, StreamContent
но я зацикливаюсь на этом шаге.
c#
asp.net
wcf
asp.net-web-api
wcf-web-api
отметка
источник
источник
using
как я: aspnetmonsters.com/2016/08/2016-08-27-httpclientwrongusing
вокругStringContent
создания хотя.var content = new StringContent(jsonObject.ToString(), Encoding.UTF8, "application/json")
я должен был установитьcontent.Headers.ContentType = new MediaTypeHeaderValue("application/json");
. Смотрите ответ ниже для более подробной информации.Самый простой способ - использовать
StringContent
представление JSON вашего объекта JSON.источник
В зависимости от вашей версии .NET вы также можете использовать
HttpClientExtensions.PostAsJsonAsync
метод.https://msdn.microsoft.com/en-us/library/system.net.http.httpclientextensions.postasjsonasync.aspx
источник
При использовании Newtonsoft.Json:
Пример:
источник
JsonConvert.SerializeObject
проблемы с использованием DateTimes ISO 8601 Вид: локальный или UTC ... hackered.co.uk/articles/…У меня недостаточно репутации, чтобы добавить комментарий к ответу от pomber, поэтому я публикую другой ответ. Используя подход pomber, я продолжал получать ответ «400 Bad Request» от API, к которому я отправлял свой запрос JSON (Visual Studio 2017, .NET 4.6.2). В конечном итоге проблема была связана с неправильным заголовком «Content-Type», созданным StringContent () (см. Https://github.com/dotnet/corefx/issues/7864 ).
ТЛ; др
Используйте ответ pomber с дополнительной строкой, чтобы правильно установить заголовок запроса:
источник
"application/json"
вStringContent
конструкторе, вероятно, не требуется, так как она явно указана для результирующегоcontent.Headers.ContentType
свойства. Тем не менее, я не проверял это в коде.application/json; charset=utf-8
.код над ним в vbnet:
Надеюсь это поможет
источник