Я пытался сделать HTTP-запрос POST с приложением / json в теле к внешнему веб-сервису из C # (.NET Core 2.2.104).
Я уже прочитал все подобные вопросы в SO инаписал этот код:
SignXmlRequestDto requestBody = new SignXmlRequestDto(p12, model.SignCertPin, model.Data);
string json = JsonConvert.SerializeObject(requestBody);
var httpRequestMessage = new HttpRequestMessage
{
Method = HttpMethod.Post,
RequestUri = ncanNodeUrl,
Headers =
{
{ HttpRequestHeader.ContentType.ToString(), "application/json" }
},
Content = new StringContent(JsonConvert.SerializeObject(json))
};
var response = await httpClient.SendAsync(httpRequestMessage);
string responseString = await response.Content.ReadAsStringAsync();
Я получаю сообщение об ошибке от службы, оно говорит: "Недопустимый заголовок Content-Type. Пожалуйста, установите Content-Type на application / json" .Что здесь интересно, если я имитирую этот запрос от Почтальона, то все работает хорошо, и я получаю успешный ответ.
Обновлено: как предложил @ Kristóf Toth, я изменил свой код на:
var httpRequestMessage = new HttpRequestMessage
{
Method = HttpMethod.Post,
RequestUri = ncanNodeUrl,
Content = new StringContent(json, Encoding.UTF8, "application/json")
};
var response = await httpClient.SendAsync(httpRequestMessage);
string responseString = await response.Content.ReadAsStringAsync();
, но все равно выдает мне то же сообщение об ошибке.