Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/.net/24.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
WebRequest是与网站交互的正确C#工具吗?_C#_.net_Webrequest - Fatal编程技术网

WebRequest是与网站交互的正确C#工具吗?

WebRequest是与网站交互的正确C#工具吗?,c#,.net,webrequest,C#,.net,Webrequest,我正在用C#编写一个小工具,它需要使用POST和json格式向网站发送和接收数据。我以前从未在C#(或任何语言)中做过类似的事情,所以我正在努力寻找一些有用的信息来开始学习 我在C#中找到了一些关于WebRequest类的信息(特别是来自),但在我开始深入研究之前,我想知道这是否是适合这项工作的工具 我已经找到了很多将数据转换为json格式的工具,但其他的工具不多,所以这里的任何信息都会非常有用,以防我陷入死胡同。我使用WebRequest与网站进行交互。这是正确的“工具” 我不能评论你问题的J

我正在用C#编写一个小工具,它需要使用POST和json格式向网站发送和接收数据。我以前从未在C#(或任何语言)中做过类似的事情,所以我正在努力寻找一些有用的信息来开始学习

我在C#中找到了一些关于WebRequest类的信息(特别是来自),但在我开始深入研究之前,我想知道这是否是适合这项工作的工具


我已经找到了很多将数据转换为json格式的工具,但其他的工具不多,所以这里的任何信息都会非常有用,以防我陷入死胡同。

我使用WebRequest与网站进行交互。这是正确的“工具”


我不能评论你问题的JSON方面。

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

举几个例子:

有时比其他方法更容易使用。你可能想看看

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

网络客户端示例:

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,以防在向网站发布数据时有人想要更新代码(WebRequest的HTTP特定实现)是一个完美的解决方案。它支持SSL、异步请求和一系列其他功能,并且在MSDN上有很好的文档记录

有效负载可以是任何内容:JSON格式的数据或任何形式的数据——只要您将ContentType属性设置为服务器期望和理解的内容(最有可能是application/JSON、text/JSON或text/x-JSON),一切都可以


从系统服务使用HttpWebRequest时可能出现的一个问题是:由于它使用IE代理和凭据信息,当作为LOCALSYSTEM用户(或者基本上是任何不定期交互登录的帐户)运行时,默认行为可能有点奇怪。将代理和身份验证属性设置为
Nothing
(或者,正如您的C#people喜欢称之为
null
,我想)应该可以避免这种情况。

WebRequest,更具体地说,HttpWebRequest类是您想要实现的一个很好的起点。要创建请求,您将使用WebRequest。创建并将创建的请求强制转换为HttpWebRequest以实际使用它。然后,您将创建post数据并将其发送到流,如:

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方法读回响应,该方法将允许您读取结果响应流并执行任何其他需要执行的操作。有关该课程的更多信息,请访问:


要将实例对象转换为json格式的字符串,反之亦然,请尝试使用json.NET:


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

当前评分最高的答案很有用,但它不发送或接收json

下面是一个将JSON用于发送和接收的示例:

下面是最有助于我解决这个问题的StackOverflow问题:

这是另一个相关的问题:


在每个链接后面插入换行符的两个空格。后面缺少分号:string postData=“var=value1&var2=value2”