关于.net:WebRequest是用于与网站进行交互的正确C#工具吗?

关于.net:WebRequest是用于与网站进行交互的正确C#工具吗?

Is WebRequest The Right C# Tool For Interacting With Websites?

我正在用C#语言编写一个小工具,该工具需要使用POST和json格式向/从网站发送和接收数据。 我以前从未用C#(或实际上是任何一种语言)做过类似的事情,所以我一直在努力寻找一些有用的信息来使我入门。

我已经在C#中的WebRequest类上找到了一些信息(特别是从这里开始),但是在我开始研究它之前,我想知道这是否是正确的工具。

我发现有很多工具可以将数据转换为json格式,但是没有太多其他功能,因此,如果我最终陷入困境,那么这里的任何信息都将非常有用。


WebRequest(尤其是HttpWebRequest类)是您要实现的目标的良好起点。要创建请求,您将使用WebRequest.Create并将创建的请求转换为HttpWebRequest以实际使用它。然后,您将创建自己的帖子数据,并将其发送到流中,如下所示:

1
2
3
4
5
6
7
8
9
10
11
12
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/zh-CN/library/system.net.httpwebrequest.aspx


WebClient有时比WebRequest更易于使用。您可能想看看它。

对于JSON反序列化,您将需要查看JavaScriptSerializer类。

WebClient示例:

1
2
3
4
5
6
7
8
9
10
11
12
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


当涉及到将数据发布到网站时,System.Net.HttpWebRequest(WebRequest的HTTP特定实现)是一个非常不错的解决方案。它支持SSL,异步请求和许多其他功能,并且在MSDN上有详细记录。

有效负载可以是任何东西:JSON格式的数据或其他任何东西-只要将ContentType属性设置为服务器期望和理解的内容(很可能是application / json,text / json或text / x-json),所有内容都将是精细。

使用来自系统服务的HttpWebRequest时的一个潜在问题:由于它使用IE代理和凭据信息,因此,以LOCALSYSTEM用户(或基本上没有定期交互登录的任何帐户)运行时,默认行为可能会有些奇怪)。将Proxy和Authentication属性设置为Nothing(或者,我想您是C#人们更喜欢将其称为null)应该避免这种情况。


当前评分最高的答案很有帮助,但它不会发送或接收JSON。

这是一个使用JSON进行发送和接收的示例:

如何在Web服务中发布JSON对象

这是最能帮助我解决此问题的StackOverflow问题:

在ASP.net Web服务和ASP.Net Web客户端之间发送和接收JSON时出现问题

这是另一个相关的问题:

用C#进行json调用


要将实例对象转换为json格式的字符串,反之亦然,请尝试Json.NET:
http://json.codeplex.com/

我目前在项目中使用它,它易于学习和使用,并在序列化和自定义类型转换器方面提供了一定的灵活性。它还支持用于查询json输入的LINQ语法。


我已经使用WebRequest与网站进行交互。这是正确的"工具"

我无法评论您问题的JSON方面。


在3.5中有一个内置的jsonserializer。 webrequest是您要找的合适的课程。

一些例子:

  • http://geekswithblogs.net/JuanDoNeblo/archive/2007/10/24/json_in_aspnetajax_part2.aspx
  • http://dev.aol.com/blog/markdeveloper/ShareFileWithNETFramework
  • http://geekswithblogs.net/JuanDoNeblo/archive/2007/10.aspx

推荐阅读

    linux命令补全工具?

    linux命令补全工具?,工具,系统,软件,地址,命令,名称,智能,环境,信息,终端,简

    linux交互删除命令?

    linux交互删除命令?,名称,不了,系统,文件夹,命令,通用,文件,目录,指令,方法,l

    linux系统命令行工具?

    linux系统命令行工具?,工具,系统,工作,状态,命令,地方,标准,信息,环境,基础,L

    linux常用命令c语言?

    linux常用命令c语言?,系统,工作,信息,管理,基础,命令,地址,目录,简介,时间,li

    linux进入网站命令?

    linux进入网站命令?,系统,环境,网站,传播,终端,命令,窗口,快捷键,界面,虚拟

    linux入侵网站命令?

    linux入侵网站命令?,工作,地址,信息,系统,数字,网站,名称,命令,网络,密码,lin

    linux命令下载工具?

    linux命令下载工具?,工具,网络,代理,代码,简介,位置,系统,第一,下载工具,文

    linux命令行设置语言?

    linux命令行设置语言?,系统,管理,环境,国家,工具,电脑,软件,文化,底部,语言,l

    linux命令行交互界面?

    linux命令行交互界面?,系统,密码,状态,终端,信息,工具,环境,情况,首页,界面,l

    linux使用命令改语言?

    linux使用命令改语言?,系统,工作,管理,电脑,设备,字符集,中文,命令,语言,虚

    linux好用的命令工具?

    linux好用的命令工具?,系统,管理,工具,基础,服务,信息,工作,发行,公司,代码,L

    linux交互处理命令?

    linux交互处理命令?,工作,系统,信息,命令,地址,目录,标准,观察,位置,基础,Lin

    linux常用命令行工具?

    linux常用命令行工具?,系统,工作,工具,地址,管理,信息,命令,软件,目录,基础,l

    c语言写linux命令?

    c语言写linux命令?,系统,工具,代码,智能,工作,环境,情况,位置,命令,文件,如何

    linux命令行专业工具?

    linux命令行专业工具?,工具,系统,工作,信息,服务,环境,基础,命令,管理,发行,l

    linux命令行执行工具?

    linux命令行执行工具?,工具,系统,网络,分析,工作,服务,状态,信息,电脑,发行,s

    linux汇编语言命令?

    linux汇编语言命令?,系统,地址,代码,数据,网络,平台,平均,位置,灵活,工作,汇

    linux命令行执行工具?

    linux命令行执行工具?,工具,系统,网络,分析,工作,服务,状态,信息,电脑,发行,s

    linux汇编语言命令?

    linux汇编语言命令?,系统,地址,代码,数据,网络,平台,平均,位置,灵活,工作,汇

    linux网站根目录命令?

    linux网站根目录命令?,系统,一致,设备,网站,目录,根目录,信息,标准,位置,电