这是我的代码
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()
答案 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 并学习使用它会为您省去很多麻烦。