通过httpwebrequest发布数据并在php中获取数据

本文关键字:数据 php 获取 通过 布数据 httpwebrequest | 更新日期: 2023-09-27 18:10:58

我有这个php代码在服务器:

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

和我在c#中通过httpwebrequest发送post数据:

            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(httpWebResponse.GetResponseStream()))
        {
            MessageBox.Show(sr.ReadToEnd());
        }
显示了PHP页面的静态HTML代码。但是消息框中没有显示任何张贴值,这意味着没有张贴数据。怎么了?

通过httpwebrequest发布数据并在php中获取数据

您需要获取数据的字节数

试试这段代码,来自这个家伙的博客文章。

 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";
        }