У меня был проект, который потребовал отправить QueryString на 2,5 миллиона символов на веб-страницу. Сам сервер обрабатывал только URI, который составлял 5400 символов или меньше. После попытки несколько различных наборов коды для WebRequest/WebResponse, WebClient и сокетов, я наконец-то нашел следующий код, который решить мою проблему:Как избежать ошибки сервера 414 для очень длинных значений QueryString
HttpWebRequest webReq;
HttpWebResponse webResp = null;
string Response = "";
Stream reqStream = null;
webReq = (HttpWebRequest)WebRequest.Create(strURL);
Byte[] bytes = Encoding.UTF8.GetBytes("xml_doc=" + HttpUtility.UrlEncode(strQueryString));
webReq.ContentType = "application/x-www-form-urlencoded";
webReq.Method = "POST";
webReq.ContentLength = bytes.Length;
reqStream = webReq.GetRequestStream();
reqStream.Write(bytes, 0, bytes.Length);
reqStream.Close();
webResp = (HttpWebResponse)webReq.GetResponse();
if (webResp.StatusCode == HttpStatusCode.OK)
{
StreamReader loResponseStream = new StreamReader(webResp.GetResponseStream(), Encoding.UTF8);
Response = loResponseStream.ReadToEnd();
}
webResp.Close();
reqStream = null;
webResp = null;
webReq = null;
Вы вводите в заблуждение протокол TCP и HTTP, который является протоколом более высокого уровня. Без дополнительной информации невозможно узнать, что ожидает сервер. Он может ожидать подключения к сокету TCP и записи текстовых данных непосредственно в сокет или может ожидать HTTP POST. Кроме того, ваш примерный URL-адрес является HTTPS, для которого требуется шифрованный SSL-сокет ... – Peter
Вы правы, что он ожидает HTTP POST. Я буду зашифровать SSL-сокеты SSL и HTTP POST. –