EDIT: khoảnh khắc tôi hỏi những câu hỏi tôi thougt cố gắng một cái gì đó .. tôi đã thiết lập thuộc tính XmlNamespace theo yêu cầu và điều đó đã làm các trick ..RestSharp Deserialize trả về thuộc tính rỗng nhưng xml.deserialize kiểm tra hoạt động
request.XmlNamespace = "http://musicbrainz.org/ns/mmd-2.0#";
Nhưng tôi thực sự không hiểu là tại sao ...
vấn đề kế tiếp là nhận RestSharp nhận atributes xml như thuộc tính đối tượng
Tôi đã đi qua điều này cho hầu hết các ngày cuối tuần và tôi chỉ không làm cho nó hoạt động.
Tôi đang cố viết một trình bao bọc tròn một dịch vụ web RestFul (MusicBrainz). Tôi đang thử nghiệm với một ví dụ đơn giản: lấy chi tiết của một nghệ sĩ và đặt nó vào một đối tượng Nghệ sĩ tùy chỉnh.
Khi tôi thực hiện một thực thi trên RestClient nó kết thúc ok nhưng thuộc tính đối tượng của tôi là null .. Nhưng khi tôi kiểm tra deserialization với XmlDeserializer các objectproperties được lấp đầy (nhưng không cho thuộc tính tương ứng với một thuộc tính, nhưng tôi sẽ giải quyết vấn đề này sau)
Điều gì sẽ xảy ra giữa quá trình deserialization của phản hồi và đưa đối tượng vào response.data? Khá có thể nó là một lỗi "newbie" Tôi làm như thế này là những bước đi đầu tiên của tôi với RestSharp ..
Trợ giúp sẽ được nhiều đánh giá cao ..
Returnded xml:
<metadata>
<artist type="Group" id="f1548c5b-329e-4036-921c-02213a04b525">
<name>Uriah Heep</name>
<sort-name>Uriah Heep</sort-name>
<country>GB</country>
<life-span>
<begin>1970</begin>
</life-span>
</artist>
</metadata>
My lớp:
public class Artist
{
public int Id { get; set; }
public string Type { get; set; }
public string Name { get; set; }
public string SortName { get; set; }
public string Country { get; set; }
}
Trong các thuộc tính sản lượng mã sau đây được điền
var output = xml.Deserialize<Artist>(response);
Nhưng phản ứng tương tự không điền tính khi gọi
var response = client.Execute<T>(request);
mã hoàn chỉnh (tôi đã đặt mã thử nghiệm trong phương pháp chung cho lợi ích của sự đơn giản):
public T Execute<T>(RestRequest request) where T : new()
{
var client = new RestClient();
client.BaseUrl = BaseUrl;
client.Authenticator = null;
//does not fill properties
var response = client.Execute<T>(request);
if (response.ErrorException != null)
{
throw response.ErrorException;
}
var xml = new XmlDeserializer();
//fills properties
var output = xml.Deserialize<Artist>(response);
return response.Data;
}
Tôi tìm thấy giải pháp mà tôi muốn được quan tâm :-) –
@AndersBornholm. Đã lâu rồi tôi mới thực hiện một số công việc trong dự án này. Nhưng như xa một bộ nhớ của tôi đi "giải pháp" là để thiết lập một không gian tên trên yêu cầu RestSharp .. Nếu bạn đang thực sự tuyệt vọng tôi có thể đào lên các dự án và có được một cái nhìn gần hơn ... – FasterRaf
Tôi thực sự đã không làm việc trên dự án của tôi trong một thời gian dài. Tôi giải quyết nó bằng cách sử dụng một cái gì đó khác hơn là restsharp nếu tôi nhớ chính xác :-) –