Я пытаюсь опубликовать некоторые данные JSON в C #.
До сих пор я попробовал два метода. Один с HttpWebRequest (который работает, больше информации ниже), а другой с httpClient (я бы лучше использовал этот).
Метод: httpClient
using (HttpClient client = new HttpClient())
{
var content = new StringContent(postData, Encoding.UTF8, "application/json");
var response = await client.PostAsync(url, content);
responseString = await response.Content.ReadAsStringAsync();
}
Метод: HttpWebRequest
HttpWebRequest myHttpWebRequest = (HttpWebRequest)WebRequest.Create(url);
myHttpWebRequest.Method = "POST";
byte[] data = Encoding.ASCII.GetBytes(postData);
myHttpWebRequest.ContentType = "application/json";
myHttpWebRequest.ContentLength = data.Length;
Stream requestStream = await myHttpWebRequest.GetRequestStreamAsync();
requestStream.Write(data, 0, data.Length);
requestStream.Close();
HttpWebResponse myHttpWebResponse = (HttpWebResponse)await myHttpWebRequest.GetResponseAsync();
Stream responseStream = myHttpWebResponse.GetResponseStream();
StreamReader myStreamReader = new StreamReader(responseStream, Encoding.Default);
string pageContent = myStreamReader.ReadToEnd();
myStreamReader.Close();
responseStream.Close();
myHttpWebResponse.Close();
Оба выдают ошибку: Невозможно прочитать данные из транспортного соединения: Соединение было закрыто.
Добавление этой строки во 2-й метод решает проблему.
myHttpWebRequest.ProtocolVersion = HttpVersion.Version10;
Я не понимаю, почему это так. Есть ли способ, которым я могу сделать это с httpClient, потому что я бы предпочел использовать это.
Любая помощь приветствуется. Спасибо.