我正在用C#编写一个小工具,它需要使用POST和json格式向网站发送数据和从网站接收数据.我以前从未在C#(或任何语言)中做过这样的事情,所以我很难找到一些有用的信息让我开始.
我在C#中找到了一些关于WebRequest类的信息(特别是从这里开始),但在我开始深入研究之前,我想知道这是否适合这项工作.
我发现有很多工具可以将数据转换为json格式,但其他方面并不多,所以任何信息在这里都会非常有用,以防我最终陷入死胡同.
WebRequest以及更具体的HttpWebRequest类是您想要实现的目标的良好起点.要创建请求,您将使用WebRequest.Create并将创建的请求强制转换为HttpWebRequest以实际使用它.然后,您将创建发布数据并将其发送到流,如:
HttpWebRequest req = (HttpWebRequest) WebRequest.Create("http://mysite.com/index.php"); req.Method = "POST"; req.ContentType = "application/x-www-form-urlencoded"; string postData = "var=value1&var2=value2"; req.ContentLength = postData.Length; StreamWriter stOut = new StreamWriter(req.GetRequestStream(), System.Text.Encoding.ASCII); stOut.Write(postData); stOut.Close();
类似地,您可以使用GetResponse方法读取响应,这将允许您读取生成的响应流并执行您需要执行的任何操作.您可以在以下网址找到有关课程的更多信息:
http://msdn.microsoft.com/en-us/library/system.net.httpwebrequest.aspx
WebClient有时比WebRequest更容易使用.你可能想看看它.
对于JSON反序列化,您将需要查看JavaScriptSerializer类.
WebClient示例:
using (WebClient client = new WebClient ()) { //manipulate request headers (optional) client.Headers.Add (HttpRequestHeader.UserAgent, "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.2; .NET CLR 1.0.3705;)"); //execute request and read response as string to console using (StreamReader reader = new StreamReader(client.OpenRead(targetUri))) { string s = reader.ReadToEnd (); Console.WriteLine (s); } }
标记为wiki,以防有人想要更新代码