开发者

post data through httpwebrequest and get it in php

开发者 https://www.devze.com 2023-04-12 06:51 出处:网络
I have this php code in server : foreach($_POST as $pdata) echo \" *-* \".$pdata.\" *-*<br> \"; and i am sending post data by httpwebrequest in c# :

I have this php code in server :

foreach($_POST as $pdata)
echo " *-* ".  $pdata." *-*<br> ";

and i am sending post data by httpwebrequest in c# :

            HttpWebRequest httpWebRequest = HttpWebRequest.Create("http://127.0.0.1/22") as HttpWebRequest;
        //Specifing the Method
        httpWebRequest.Method = "POST";
        //Data to Post to the Page, itis key value pairs; separated by "&"
        string data = "Username=username&password=password";
        //Setting the content type, it is required, otherwise it will not work.
        httpWebRequest.ContentType = "application/x-www-form-urlencoded";
        //Getting the request stream and writing the post data
        using (StreamWriter sw = new StreamWriter(httpWebRequest.GetRequestStream()))
        {
            sw.Write(data);
        }
        //Getting the Respose and reading the result.
        HttpWebResponse httpWebResponse = httpWebRequest.GetResponse() as HttpWebResponse;
        using (StreamReader sr = new StreamReader(http开发者_如何转开发WebResponse.GetResponseStream()))
        {
            MessageBox.Show(sr.ReadToEnd());
        }

static html codes of php page are shown. but nothing of posted value are shown in messagebox .that means no data are posted. what is wrong?


You need to get the bytes of the data.

Try this code, from this guy's blog post.

 public string Post(string url, string data) {


           string vystup = null;
           try
           {
               //Our postvars
               byte[] buffer = Encoding.ASCII.GetBytes(data);
               //Initialisation, we use localhost, change if appliable
               HttpWebRequest WebReq = (HttpWebRequest)WebRequest.Create(url);
               //Our method is post, otherwise the buffer (postvars) would be useless
               WebReq.Method = "POST";
               //We use form contentType, for the postvars.
               WebReq.ContentType = "application/x-www-form-urlencoded";
               //The length of the buffer (postvars) is used as contentlength.
               WebReq.ContentLength = buffer.Length;
               //We open a stream for writing the postvars
               Stream PostData = WebReq.GetRequestStream();
               //Now we write, and afterwards, we close. Closing is always important!
               PostData.Write(buffer, 0, buffer.Length);
               PostData.Close();
               //Get the response handle, we have no true response yet!
               HttpWebResponse WebResp = (HttpWebResponse)WebReq.GetResponse();
               //Let's show some information about the response
               Console.WriteLine(WebResp.StatusCode);
               Console.WriteLine(WebResp.Server);

               //Now, we read the response (the string), and output it.
               Stream Answer = WebResp.GetResponseStream();
               StreamReader _Answer = new StreamReader(Answer);
               vystup =  _Answer.ReadToEnd();

               //Congratulations, you just requested your first POST page, you
               //can now start logging into most login forms, with your application
               //Or other examples.
           }
           catch (Exception ex)
           {
               MessageBox.Show(ex.Message);
           }
           return vystup.Trim()+"\n";

        }
0

精彩评论

暂无评论...
验证码 换一张
取 消

关注公众号