Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/302.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/json/13.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
C# 如何获得JSON格式的服务器响应?_C#_Json - Fatal编程技术网

C# 如何获得JSON格式的服务器响应?

C# 如何获得JSON格式的服务器响应?,c#,json,C#,Json,我正在从本地驱动器上载.json文件: using (WebClient client = new WebClient()) { client.Headers.Add("Content-Type", "application/json"); byte[] resp = client.UploadFile("http://mycoolWebsite.com", "POST", "path to file"); string textResponse = System.T

我正在从本地驱动器上载.json文件:

using (WebClient client = new WebClient())
{
    client.Headers.Add("Content-Type", "application/json");

    byte[] resp = client.UploadFile("http://mycoolWebsite.com", "POST", "path to file");

    string textResponse = System.Text.Encoding.ASCII.GetString(resp)

}

当我希望它是json时,来自
client.UploadFile
的响应类型是
byte[]
,这样我就可以更容易地解析它。如何要求服务器返回json?

该方法定义为返回
字节[]
,并有充分的理由。它允许将该方法用于任何web服务,并从服务器返回原始响应。定义服务器端响应是服务器的责任(显然)。您最好的选择是获取原始响应,将其编码为文本(正如您所做的),然后检查响应是否包含格式良好的JSON,从而允许您在此时进行分析


响应将是服务器返回的任何内容;这取决于您来处理。

您通常不能影响服务器端代码-无论服务器感觉返回什么,它都会返回。某些请求接受标头-您可以尝试接受标头,以查看特定服务器是否给出不同的响应。它与服务器端代码无关
UploadFile
返回
byte[]
而不是字符串。您所做的是正确的(如果您的服务器使用ASCII编码,但我会使用UTF8)。响应的主体将采用您上传到的服务器所决定的格式。我肯定响应是json,但如何将其解析为json?例如,response=
“ball”:123543543,“stuff”:[1,2,3]“
我想找到
ball:543
?我知道响应包含JSON,就像我在Powershell中所做的那样。所以
var jsonOutput=System.Text.Encoding.ASCII.GetString(resp.jsoninvert()
?来获得一个通用的.NET对象。var myObject=jsoninvert.DeserializeObject(System.Text.Encoding.ASCII.GetString(resp))。如果创建响应类型的对象,则可以执行JsonConvert.DeserializeObject()。还可以执行JObject.Parse(System.Text.Encoding.ASCII.GetString(resp))如果您想使用Json.Linq。如果您只在响应中的某个或多个特定值之后输入,那么这会更容易。您只需使用Linq查询它们。