如何使用c#将搜索字符串发布到google.com?

时间:2017-01-13 07:37:26

标签: c# http https

这是我的代码

using System;
using System.IO;
using System.Net;
using System.Text;

namespace Examples.System.Net
{
    public class Program
    {
        public static void Main ()
        {

//使用可以接收帖子的网址创建请求。

            WebRequest request = WebRequest.Create("http://www.google.com");

//将请求的Method属性设置为POST。

            request.Method = "POST";

//创建POST数据并将其转换为字节数组。

           string postData = "This is a test that posts this string to a Web server.";
           byte[] byteArray = Encoding.UTF8.GetBytes (postData);

//设置WebRequest的ContentType属性。

           request.ContentType = "application/x-www-form-urlencoded";

//设置WebRequest的ContentLength属性。

           request.ContentLength = byteArray.Length;

//获取请求流。

           Stream dataStream = request.GetRequestStream ();

//将数据写入请求流。

           dataStream.Write (byteArray, 0, byteArray.Length);

//关闭Stream对象

           dataStream.Close ();

//获取回复。

           WebResponse response = request.GetResponse ();

//显示状态。

           Console.WriteLine (((HttpWebResponse)response).StatusDescription);

//获取包含服务器返回内容的流。

           dataStream = response.GetResponseStream ();

//使用StreamReader打开流以便于访问。

           StreamReader reader = new StreamReader (dataStream);

//阅读内容。

           string responseFromServer = reader.ReadToEnd ();

// Display the content.

           Console.WriteLine (responseFromServer);

// Clean up the streams.

           reader.Close ();
           dataStream.Close ();
           response.Close ();
       }
    }
}

这是我得到的例外

Unhandled Exception: System.Net.WebException: The remote server returned an error: (405) Method Not Allowed.
       at System.Net.HttpWebRequest.GetResponse()
       at Examples.System.Net.Program.Main()

2 个答案:

答案 0 :(得分:1)

如果您查看Chrome开发者工具,您会发现Google不会使用POST进行搜索查询。 (并且根本不允许)

要使用WebRequest进行搜索,请使用GET到网址= https://www.google.se/search?q=This is a test that posts this string to a Web server

答案 1 :(得分:0)

我知道这个答案有延迟 :-) 但是在花了很多时间弄清楚如何使用 HttpWebRequest 发送数据之后,对于谷歌请求,最好的解决方案是使用 Fiddler 检查所有数据, 以及从浏览器发送的参数。 Fiddler 将帮助您验证浏览器发送到服务器的内容,即服务器使用的方法、查询字符串以及所有标头,如用户代理、接受和可能的正文字符串等。 花一些时间来设置 Fiddler 并学习使用它会为您省去很多麻烦。