How to Avoid Server Error 414 for Very Long QueryS

2019-04-16 13:19发布

I had a project that required posting a 2.5 million character QueryString to a web page. The server itself only parsed URI's that were 5,400 characters or less. After trying several different sets of code for WebRequest/WebResponse, WebClient, and Sockets, I finally found the following code that solved my problem:

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;

标签: c# webrequest
1条回答
We Are One
2楼-- · 2019-04-16 13:53

You don't need to use the sockets manually. You can use the HttpWebRequest object to handle the socket layer. You can see the answers on this other question for some sample code that will post a file. Just change the destination URL to an HTTPS url for it to use SSL.

查看更多
登录 后发表回答