C# 将HTTP响应体解析为XML

C# 将HTTP响应体解析为XML,c#,xml,C#,Xml,我使用以下代码执行HTTP请求并解析XML响应: using (HttpWebResponse resp = req.GetResponse() as HttpWebResponse) { if (resp.StatusCode == HttpStatusCode.OK) { var Obj_response = new CXML(); var ms = new StreamReader(resp.GetResponseStream(), UTF8

我使用以下代码执行HTTP请求并解析XML响应:

using (HttpWebResponse resp = req.GetResponse() as HttpWebResponse)
{
    if (resp.StatusCode == HttpStatusCode.OK)
    {
        var Obj_response = new CXML();
        var ms = new StreamReader(resp.GetResponseStream(), UTF8Encoding.UTF8);   
        t = ms.ReadToEnd();// <---- This line Caused the issue    



        XmlSerializer serializer = new XmlSerializer(typeof(CXML));    
        Obj_response = (CXML)serializer.Deserialize(ms);// <------ NOT WORKING

        return true;
    }
}
我想做的是这样的:

if(Obj_response.Status.code == 200)
{
    // something to happen on successful request
}
else
{
    // write the response text to log
}

最后我发现了问题,问题出在这行
t=ms.ReadToEnd()

这会导致流从结尾跳到结尾,之后就什么也没有了。

您正在尝试“读取XML属性”,这在很多问题中都有解释,他们都在谈论文件文档。我说的是对xmlYeah的
GetResponseStream()
,所以,.不,没有找到解决方案。。他们都不谈论流响应,我确实找到了一些假设有效的响应,但对我来说不起作用,我在这一行
document.Load(stream)得到一个错误“{”根元素丢失了。“}”然后请编辑您的尝试,包括错误和您的研究,进入您的问题。
[XmlRoot(ElementName = "Status")]
public class Status
{
    [XmlAttribute(AttributeName = "code")]
    public string Code { get; set; }
    [XmlAttribute(AttributeName = "text")]
    public string Text { get; set; }
}

[XmlRoot(ElementName = "Response")]
public class Response
{
    [XmlElement(ElementName = "Status")]
    public Status Status { get; set; }
    [XmlElement(ElementName = "JobID")]
    public string JobID { get; set; }
}

[XmlRoot(ElementName = "cXML")]
public class CXML
{
    [XmlElement(ElementName = "Response")]
    public Response Response { get; set; }
    [XmlAttribute(AttributeName = "payloadID")]
    public string PayloadID { get; set; }
    [XmlAttribute(AttributeName = "lang", Namespace = "http://www.w3.org/XML/1998/namespace")]
    public string Lang { get; set; }
    [XmlAttribute(AttributeName = "timestamp")]
    public string Timestamp { get; set; }
}
if(Obj_response.Status.code == 200)
{
    // something to happen on successful request
}
else
{
    // write the response text to log
}