如何获取发布数据和请求标头

时间:2013-05-02 07:36:39

标签: c# .net

我无法从按钮点击事件的下面代码中获取发布数据和请求标头..这里我必须传递一个url和一个字符串作为帖子数据...

现在当我点击按钮我应该得到响应标题,请求标题,发布数据和网址的内容...但我无法获取请求标题并从下面的代码发布数据...可以任何一个告诉我我哪里错了

private void button1_Click(object sender, EventArgs e)
            {

                try
                {

                    string url = txtUrl.Text.Trim();

    //HttpWebRequest WebRequestObject = (HttpWebRequest)WebRequest.Create(url);
                   // string result = null;
                    string postData = "This";
                    ASCIIEncoding ObjASCIIEncoding = new ASCIIEncoding();

                    byte[] fileData = ObjASCIIEncoding.GetBytes(postData);

                    // Create a request using a URL that can receive a post. 
                    WebRequest request = WebRequest.Create(url);
                    // Set the Method property of the request to POST.
                    request.Method = "Post";
                    // Create POST data and convert it to a byte array.    
                    WebHeaderCollection webh = request.Headers;
                    txtRequest.Text = webh.ToString();

                    // Set the ContentType property of the WebRequest.
                    request.ContentType = "application/x-wwww-form-urlencoded";
                    // Set the ContentLength property of the WebRequest.
                    request.ContentLength = fileData.Length;
                    // Get the request stream.
                    Stream dataStream = request.GetRequestStream();
                   // StreamReader r = new StreamReader(dataStream);
                   // string p = r.ReadToEnd();
                    // Write the data to the request stream.
                    dataStream.Write(fileData, 0, fileData.Length);
                    // Close the Stream object.
                    dataStream.Close();
                     //Get the response.

                    request.Credentials = CredentialCache.DefaultCredentials;
                 //   HttpWebResponse Response = (HttpWebResponse)WebRequestObject.GetResponse();

                    WebResponse Response = request.GetResponse();
                   // HttpStatusCode code = Response.StatusCode;
                    //txtStatus.Text = code.ToString();
                   txtResponse.Text = Response.Headers.ToString();
                    // Open data stream:
                    Stream WebStream = Response.GetResponseStream();

                    // Create reader object:
                    StreamReader Reader = new StreamReader(WebStream);

                    // Read the entire stream content:

                    txtContent.Text = Reader.ReadToEnd(); 
                    // Cleanup
                    Reader.Close();
                    WebStream.Close();
                    Response.Close();



                    //  var request = WebRequest.Create("http://www.livescore.com ");
                    //var response = request.GetResponse();
                }
                catch(Exception ex)
                {
                    MessageBox.Show(ex.ToString());
                }
            }

1 个答案:

答案 0 :(得分:2)

这应该得到标题键和值,记住每个键都有一个值数组:

请求标题

要添加标题,请调用Add方法:

    WebRequest request = WebRequest.Create("http://www.google.com");
    request.Method = "GET";
    request.Headers.Add("MyTestHeader", "My Test Header Value");

    foreach (var headerKey in request.Headers.Keys)
    {
        var headerValues = request.Headers.GetValues(headerKey.ToString());
        Trace.TraceInformation("Request Header:{0}, Value:{1}", headerKey, String.Join(";", headerValues));
    }

响应标题

    using (WebResponse response = request.GetResponse())
    {
        foreach (var headerKey in response.Headers.Keys)
        {
            var headerValues = response.Headers.GetValues(headerKey.ToString());
            Trace.TraceInformation("Response Header: {0}, Value: {1}", headerKey, String.Join(";",headerValues));
        }
    }