Я пытаюсь прочитать XML в веб-API в asp.net.Ниже фрагменты кода показывают классы XML, class, webapiconfig и controller.Я могу прочитать ответ, используя fiddler со всеми узлами и атрибутами xml.Но при использовании cURL POST мой объект класса readresponse в контроллере становится нулевым во время отладки.Я не могу определить правильный запрос cURL.
Запрос My Post в XML:
<?xml version="1.0" encoding="UTF-8"?>
<Status xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" ID="8038" Level="2030">
<Item>
<Product>Chocolate</Product>
<Category>Confectionary</Category>
<Price>100</Price>
<Results type="result" resultType="image">
<ProductLink>https://google.com</ProductLink>
</Results >
</Item>
</Status>
Соответствующий класс:
[XmlRoot(ElementName="Results")]
public class Results {
[XmlElement(ElementName="ProductLink")]
public string ProductLink { get; set; }
[XmlAttribute(AttributeName="type")]
public string Type { get; set; }
[XmlAttribute(AttributeName="resultType")]
public string ResultType { get; set; }
}
[XmlRoot(ElementName="Item")]
public class Item {
[XmlElement(ElementName="Product")]
public string Product { get; set; }
[XmlElement(ElementName="Category")]
public string Category { get; set; }
[XmlElement(ElementName="Price")]
public string Price { get; set; }
[XmlElement(ElementName="Results")]
public Results Results { get; set; }
}
[XmlRoot(ElementName="Status")]
public class Status {
[XmlElement(ElementName="Item")]
public Item Item { get; set; }
[XmlAttribute(AttributeName="xsi", Namespace="http://www.w3.org/2000/xmlns/")]
public string Xsi { get; set; }
[XmlAttribute(AttributeName="ID")]
public string ID { get; set; }
[XmlAttribute(AttributeName="Level")]
public string Level { get; set; }
}
WebApiConfig
configuration.Formatters.XmlFormatter.MediaTypeMappings.Add(New QueryStringMapping("type", "xml", New MediaTypeHeaderValue("application/xml")))
configuration.Formatters.XmlFormatter.UseXmlSerializer = True
configuration.Routes.MapHttpRoute(name:="DefaultApi", routeTemplate:="api/{controller}/{id}", defaults:=New With {Key .id = RouteParameter.[Optional]})
Класс контроллера WEB API
Public Class MyAPIController
Inherits ApiController
Public Function Product(ByVal readresponse As Status) As String
End Function
End Class
cURL Post
curl -X POST -H "Content-type: application/xml" -d "<?xml version="1.0" encoding="UTF-8"?><Status xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" ID="8038" Level="2030"><Item><Product>Chocolate</Product><Category>Confectionary</Category><Price>100</Price><Results type="result" resultType="image"><ProductLink>https://google.com</ProductLink></Results ></Item></Status>" http://localhost:10023/WebApp/api/MyAPI/Product