繁体   English   中英

使用HttpWebRequest丢失帖子数据

[英]missing post data by using HttpWebRequest

我在使用HttpWebRequest发布数据时遇到了问题。

有一个字符串(即key1=value1&key2=value2&key3=value3 ),我已将其发布到一个网站(即www。*。com / edit),但是,我不知道为什么有时它没有错,但是有时,第一个key=value1将丢失,只有key2=value&key3=value3可以在HttpAnalyzer找到。

public static string SubmitData(string Url, string FormData, CookieContainer _Cc, string ContentType)
        {
            Stream RequestStream = null, ResponseStream = null; StreamReader Sr = null;
            HttpWebRequest HRequest = (HttpWebRequest)WebRequest.Create(Url);
            try
            {

                HRequest.CookieContainer = _Cc;
                HRequest.Method = "POST";
                HRequest.UserAgent = "Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 6.1; Trident/4.0; SLCC2; .NET CLR 2.0.50727; .NET CLR 3.5.30729; .NET CLR 3.0.30729; Media Center PC 6.0)";
                HRequest.ContentType = ContentType;
                HRequest.ContentLength = FormData.Length;
                //byte[] BFromData = new ASCIIEncoding().GetBytes(FormData);
                byte[] BFromData = Encoding.ASCII.GetBytes(FormData);
                BFromData = Encoding.Convert(Encoding.ASCII, Encoding.UTF8, BFromData);//ascii → utf8
                RequestStream = HRequest.GetRequestStream();
                RequestStream.Write(BFromData, 0, BFromData.Length);
                //RequestStream.Write(utf8Bytes,0,utf8Bytes.Length );
                HttpWebResponse HResponse = (HttpWebResponse)HRequest.GetResponse();
                ResponseStream = HResponse.GetResponseStream();
                Sr = new StreamReader(ResponseStream, Encoding.UTF8);
                return Sr.ReadToEnd();
            }
            catch
            {
                return "";
            }
            finally
            {
                if (null != RequestStream) RequestStream.Close();
                if (null != ResponseStream) ResponseStream.Close();
                if (null != Sr) Sr.Close();
            }
        }

使用Fiddler查看单击表单时请求的样子,然后尝试使用此方法并修改您的请求所需的内容。

public static void PostDataAndDoSomething()
        {            
            string URI = "http://www.something.com";
            //make your request payload
            string requestBody = String.Format("{{'param1': {0}, 'param2': {1}}}",value1, value2); //json format

            HttpWebRequest request = (HttpWebRequest)HttpWebRequest.Create(URI);  //make request         

            // set request headers as you need
            request.ContentType = "application/json; charset=UTF-8"; 
            request.Accept = "application/json, text/javascript;
            request.Method = "POST";            
            request.UserAgent = "";
            request.Headers.Add("X-Requested-With", "XMLHttpRequest");
            using (StreamWriter writer = new StreamWriter(request.GetRequestStream()))
            {
                writer.Write(requestBody); //write your request payload
            }

            WebResponse response = request.GetResponse();          
            string jsonData = String.Empty;

            using (var reader = new StreamReader(response.GetResponseStream()))
            {
                jsonData = reader.ReadToEnd();
            }           
            response.Close();

            //do something with your data, deserialize, Regex etc....
        }

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM