cURL POST XML-запрос, включая атрибуты - PullRequest
0 голосов
/ 10 октября 2018

Я пытаюсь прочитать 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
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...