Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/rest/5.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
反序列化RESTAPI xml响应c#_C#_Rest - Fatal编程技术网

反序列化RESTAPI xml响应c#

反序列化RESTAPI xml响应c#,c#,rest,C#,Rest,我的任务是调用RESTAPI,该API提供XML输出。xml输出应该反序列化为.NET类,以后可以查询该类。我不确定我哪里做错了,但代码给出了一个错误。在调试代码时,我发现问题在于,当尝试反序列化响应流时,它会出现一个错误,错误是“responsestream.Length引发了System.NotSupportedException类型的异常”。请帮我解决这个问题。 下面是我的示例代码 WebRequest request = (WebRequest)WebRequest.CreateHttp

我的任务是调用RESTAPI,该API提供XML输出。xml输出应该反序列化为.NET类,以后可以查询该类。我不确定我哪里做错了,但代码给出了一个错误。在调试代码时,我发现问题在于,当尝试反序列化响应流时,它会出现一个错误,错误是“responsestream.Length引发了System.NotSupportedException类型的异常”。请帮我解决这个问题。 下面是我的示例代码

WebRequest request = (WebRequest)WebRequest.CreateHttp(apiurl);
request.Method = "GET";
using (WebResponse response = request.GetResponse())
{
    Stream responsestream = response.GetResponseStream();

    XmlSerializer serializer = new XmlSerializer(typeof(List<ResponseClass>));
    var apiresponse = (List<ResponseClass>)serializer.Deserialize(responsestream);
}
WebRequest-request=(WebRequest)WebRequest.CreateHttp(apirl);
request.Method=“GET”;
使用(WebResponse=request.GetResponse())
{
Stream responsestream=response.GetResponseStream();
XmlSerializer serializer=新的XmlSerializer(typeof(List));
var apiresponse=(列表)序列化程序。反序列化(responsestream);
}

您是否尝试过在项目中更新Rest API的服务引用?类型可能已经改变了。我改变了,但它仍然给出了相同的问题。我可能以错误的方式处理响应流,这可能是原因。可能检查引用,不确定它是否重要,但它可能使用IEnumerable而不是List。您必须读取整个响应,然后反序列化它,
GetResponseStream
返回的流不支持反序列化程序使用的
Length
属性。