Как избежать ошибки сервера 414 для очень длинных значений QueryString - PullRequest
1 голос
/ 28 мая 2010

У меня был проект, который требовал публикации 2.5 миллионов символов QueryString на веб-странице. Сам сервер только анализировал URI, которые были 5400 символами или меньше. Попробовав несколько разных наборов кода для WebRequest / WebResponse, WebClient и Sockets, я наконец нашел следующий код, который решил мою проблему:

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;

1 Ответ

1 голос
/ 28 мая 2010

Вам не нужно использовать розетки вручную. Вы можете использовать объект HttpWebRequest для обработки слоя сокета. Вы можете увидеть ответы на этот другой вопрос для некоторого примера кода, который опубликует файл Просто измените целевой URL на URL-адрес HTTPS, чтобы использовать SSL.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...