【问题标题】:How to send a request body in XML using HttpWebRequest如何使用 HttpWebRequest 以 XML 格式发送请求正文
【发布时间】:2020-10-25 23:22:12
【问题描述】:

我是 API 新手。我有一个休息 API,它有一个 XML 格式的请求正文和响应正文。 我想点击 API,但我不知道如何从代码中发送请求正文。 我的 API 的请求正文是 -

<Person>
<Id>12345</Id>
<Customer>John Smith</Customer>
<Quantity>1</Quantity>
<Price>10.00</Price>
</Person>

我的努力:

到目前为止,我知道要处理 API,您必须创建一个代理类。所以我的代理类是-

 [System.SerializableAttribute()]
    [System.ComponentModel.DesignerCategoryAttribute("code")]
    [System.Xml.Serialization.XmlTypeAttribute(AnonymousType = true)]
    [System.Xml.Serialization.XmlRootAttribute(Namespace = "", IsNullable = false)]
    public partial class Person
    {

        private ushort idField;

        private string customerField;

        private byte quantityField;

        private decimal priceField;

        /// <remarks/>
        public ushort Id
        {
            get
            {
                return this.idField;
            }
            set
            {
                this.idField = value;
            }
        }

        /// <remarks/>
        public string Customer
        {
            get
            {
                return this.customerField;
            }
            set
            {
                this.customerField = value;
            }
        }

        /// <remarks/>
        public byte Quantity
        {
            get
            {
                return this.quantityField;
            }
            set
            {
                this.quantityField = value;
            }
        }

        /// <remarks/>
        public decimal Price
        {
            get
            {
                return this.priceField;
            }
            set
            {
                this.priceField = value;
            }
        }
    }

从这个答案

How can I Post data using HttpWebRequest?

我正在做以下事情-

 var request = (HttpWebRequest)WebRequest.Create("https://reqbin.com/sample/post/xml");

            Person person = new Person();
            
            Console.WriteLine("Enter ID");
            person.Id = Convert.ToUInt16(Console.ReadLine());

            Console.WriteLine("Enter Name");
            person.Customer = Console.ReadLine();

            Console.WriteLine("Enter Quantity");
            person.Quantity = Convert.ToByte(Console.ReadLine());

            Console.WriteLine("Enter Price");
            person.Price = Convert.ToDecimal(Console.ReadLine());

          
            var data = Encoding.ASCII.GetBytes(person);

var data = Encoding.ASCII.GetBytes(person) 出现错误

上面写着cannot convert form Person to Char[]

我现在不确定如何继续。

【问题讨论】:

    标签: c# api


    【解决方案1】:

    GetBytes 期望类似字符串的输入将其转换为字节数组。所以你必须先把peron 变成一个字符串/字符数组。由于您想使用 XML,您应该使用 XML 序列化程序。例如。使用 .NET 内置的序列化程序:

    // Setup for the person above
    
    // Serialize the person into an XML string
    var serializer = new XmlSerializer(typeof(Person));
    var sb = new StringBuilder();
    using (XmlWriter xmlWriter = XmlWriter.Create(sb))
    {
        serializer.Serialize(xmlWriter, person);
    }
    
    // Byte array data to send
    var data = Encoding.ASCII.GetBytes(sb.ToString());
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-09-12
      • 2020-02-12
      • 2014-04-10
      • 2012-04-02
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多