簡體   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