【问题标题】:Deserializing external web service, XML into class object in .NET将外部 Web 服务、XML 反序列化为 .NET 中的类对象
【发布时间】:2014-09-23 03:19:38
【问题描述】:

我在从外部 Web 服务生成对象时遇到了一些麻烦。

我使用 http://./ucs-ws?requserstatus&user=testuser 之类的 httpRequest 调用 Web 服务

WebserviceClient.cs

    public string UserStatus(string userName)
    {
        string req = "req=userStatus";
        string user = "user=" + userName;
        string result;
        using (WebClient proxy = new WebClient())
        {
            proxy.Headers["Authorization"] = "Basic " + Convert.ToBase64String(Encoding.Default.GetBytes("br:br"));
            proxy.Headers.Add(HttpRequestHeader.Accept, "application/xml");

            try
            {
                var response = proxy.DownloadString(webServiceBasePath + req + "&" + user);


                result = response;
            }
            catch (Exception)
            {
                return "Web Service not available. Please contact the Administrator";
            }



        }
        return result;
    }

我从外部网络服务得到的响应是

<Result>
        <UserStatus 
                 Status="34" 
                 StatusFrom="140729143619" 
                 ClientType="4" 
                 LogOnServer="NcoreConnect" 
                 SIPServer="10.16.3.10" 
                 Device="tel:201" 
                 DeviceStatus="0" 
                 DeviceStatusFrom="140729134828" 
                 ServerTime="140731090408" 
                 IsLoggedOn="True" 
                 IsAgent="True" 
                 CallCount="0" 
                 AnsweredCount="0" 
                 Interactions="" 
                 Message="" 
                 SessionID="a123a38d-d00d-47c0-af03-2b63f40fb8a6" 
                 DiversionStatus="0" 
                 DiversionDestination="" 
                 OldMessageCount="0" 
                 NewMessageCount="0">testuser
         </UserStatus>
</Result>

我需要创建一个 userStatus 对象,我可以将其添加到列表中。使用来自 userStatus 的变量。

任何人都知道是否有一种聪明的方法可以做到这一点,所以你有这样的课程:

用户状态.cs

public class UserStatus
{
     [XmlElement("UserStatus")]
     public string UserName; // testuser

     public string Status;

     public string StatusFrom;

     public string ClientType;

     public string LogOnServer;

     ...
}

如果有人可以帮助我或引导我走向正确的方向,那就太好了。

【问题讨论】:

    标签: asp.net xml web-services xml-deserialization


    【解决方案1】:

    对于提供的 XML,以下应该可以工作

    [XmlRoot("Result")]
    public class UserStatusResult 
    {
        [XmlElement]
        public UserStatus Status { get; set; }
    }
    
    public class UserStatus
    {
        [XmlText]
        public string UserName { get; set; }
    
        [XmlAttribute]
        public string Status { get; set; }
    
        [XmlAttribute]
        public string StatusFrom { get; set; }
    
        ...
    }
    

    【讨论】:

    • 感谢您的快速答复。
    猜你喜欢
    • 2020-04-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-11-06
    • 2011-12-21
    • 1970-01-01
    相关资源
    最近更新 更多