当前位置:  开发笔记 > 编程语言 > 正文

使用RestSharp构建XML请求

如何解决《使用RestSharp构建XML请求》经验,为你挑选了1个好方法。

我正在尝试使用RestSharp和C#使用REST API.我正在使用的API文档提供了一个示例XML请求:

  
  
 EX0000000 
 07700900654
   
  07700900123  
  SMS  
  Hello Mr Sands.
   
   
  07700900124  
  SMS  
  Hello Mr Mayo.
   

我正在努力了解如何以他们想要的格式构建请求(多个元素称为"消息")

我已经为RestSharp创建了这些类来序列化:

public class messages
{
    public string accountreference { get; set; }

    public string from { get; set; }

    public message message { get; set; }
}

public class message
{
    public string to { get; set; }

    public string body { get; set; }
}

这是我的RestSharp代码:

var client = new RestClient("http://api.url.com/v1.0")
                         {
                             Authenticator =
                                 new HttpBasicAuthenticator(
                                 UserName,
                                 Password)
                         };

var request = new RestRequest("theresource", Method.POST) { RequestFormat = DataFormat.Xml };

request.AddBody(
    new messages
        {
            accountreference = Configuration.AccountReference,
            from = Configuration.From,
            message =
                new message { to = Configuration.Message.To, body = Configuration.Message.Body }
        });

var response = client.Execute(request);

当我只有一个消息元素时,这很有效,但是我不知道如何创建多个消息元素而不将它们嵌套在数组中,这不适用于API.



1> Volkan Pakso..:

默认情况下,RestSharp使用自己的序列化程序,但它也包含DotNetSerializer,因此您可以通过更改序列化程序来实现目标:

var request = new RestRequest("theresource", Method.POST) 
{ 
    RequestFormat = DataFormat.Xml, 
    XmlSerializer = new RestSharp.Serializers.DotNetXmlSerializer() 
};

然后,您可以使用消息对象列表并使用XmlElement属性进行装饰:

public class messages
{
    public string accountreference { get; set; }

    public string from { get; set; }

    [XmlElement("message")]
    public List messageList { get; set; }
}


public class message
{
    public string to { get; set; }

    public string body { get; set; }
}

然后,您可以更改最后一位以添加多条消息:

request.AddBody(
    new messages
    {
        accountreference = "ref",
        from = "from",
        messageList = new List() {
                new message { to = "to1", body = "body1" },
                new message { to = "to2", body = "body2" }
                }
    }); 

会产生(我通过检查request.Parameters [0] .Value得到了XML):



  ref
  from
  
    to1
    body1
  
  
    to2
    body2
  

我想这是你一直在寻找的XML格式.

推荐阅读
雯颜哥_135
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有