0

我正在使用 HttpClient 并进行 GetAsync 调用。然后我通过调用来确保调用成功response.ErrorSuccessStatusCode()

然后我打电话response.Content.ReadAsAsync<WikiResponse>()。调用 ReadAsAsync 时出现错误,因为第 3 方 REST 服务正在传回,并且 XML 响应称为“Response”而不是“WikiResponse”。此 WikiResponse 是由另一个第 3 方创建的。我无法创建一个名为 Response 的对象,因为已经有一个名为 this 的类与其他 DTO 处于相同的“级别”,但具有不同的类结构。

有没有办法让 WikiResponse “适合” 响应?除了类名之外,XML 和类结构是相同的。

感谢您的快速回复!

更新:

我试过[XmlRoot(ElementName = "Response")]在课堂上使用,但没有用。

这是我得到的错误:

[System.Runtime.Serialization.SerializationException] = {"Error in line 1 position 103.  Expecting element 'WikiResponse' from namespace 'http://schemas.datacontract.org/2004/07/Project.WikiResponses.DTO'.. Encountered 'Element'  with name 'Response', namespace 'http://www.someurl.com/url'. "}
4

1 回答 1

0

You could try one of the overloads for ReadAsAsync:

public static Task<T> ReadAsAsync<T>(
    this HttpContent content,
    IEnumerable<MediaTypeFormatter> formatters
)

and create your own MediaTypeFormatter.

http://msdn.microsoft.com/en-us/library/hh943959(v=vs.108).aspx

于 2012-11-18T19:54:30.877 回答