Eu estou tentando postar uma JsonObject
utilização HttpClient
da Web API. Não tenho muita certeza de como proceder e não consigo encontrar muita coisa no código de exemplo.
Aqui está o que eu tenho até agora:
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("", ???);
Eu acho que preciso interpretar o meu JsonObject
como um, StreamContent
mas estou ficando preso nesse passo.
c#
asp.net
wcf
asp.net-web-api
wcf-web-api
Marca
fonte
fonte
using
como se eu fosse: aspnetmonsters.com/2016/08/2016-08-27-httpclientwrongusing
volta em torno daStringContent
criação.var content = new StringContent(jsonObject.ToString(), Encoding.UTF8, "application/json")
eu ter que definircontent.Headers.ContentType = new MediaTypeHeaderValue("application/json");
. Veja a resposta abaixo para mais detalhes.A maneira mais fácil é usar a
StringContent
, com a representação JSON do seu objeto JSON.fonte
Dependendo da sua versão do .NET, você também pode usar o
HttpClientExtensions.PostAsJsonAsync
métodohttps://msdn.microsoft.com/en-us/library/system.net.http.httpclientextensions.postasjsonasync.aspx
fonte
Se estiver usando o Newtonsoft.Json:
Exemplo:
fonte
JsonConvert.SerializeObject
problemas usando o DateTimes ISO 8601 Tipo: Local ou UTC ... hackered.co.uk/articles/…Não tenho reputação suficiente para adicionar um comentário à resposta do pomber, por isso estou postando outra resposta. Usando a abordagem do pomber, recebi uma resposta "400 Bad Request" de uma API para a qual estava postando minha solicitação JSON (Visual Studio 2017, .NET 4.6.2). Eventualmente, o problema foi rastreado até o cabeçalho "Content-Type" produzido por StringContent () estar incorreto (consulte https://github.com/dotnet/corefx/issues/7864 ).
tl; dr
Use a resposta do pomber com uma linha extra para definir corretamente o cabeçalho na solicitação:
fonte
"application/json"
noStringContent
construtor provavelmente não é necessária, uma vez que está sendo explicitamente definido na resultandocontent.Headers.ContentType
propriedade. No entanto, não testei isso no código.application/json; charset=utf-8
.o código sobre ele no vbnet:
Espero que esta ajuda
fonte