[英]How do I send a POST request with a body that is a string or a character using httpwebrequest?
[英]How to send a request body in XML using HttpWebRequest
我是 API 的新手。 我有一个 rest API,它有一个 XML 格式的请求正文和响应正文。 我想打 API 但我不知道如何从代码发送请求正文。 我的API的request body是——
<Person>
<Id>12345</Id>
<Customer>John Smith</Customer>
<Quantity>1</Quantity>
<Price>10.00</Price>
</Person>
我的努力:
到目前为止我知道要处理 API,你必须创建一个代理 class。所以我的代理 class 是 -
[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;
}
}
}
从这个答案
我正在做以下 -
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[]
我现在不确定如何进行。
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());
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.