编辑:我问我thougt的尝试一些问题的时刻.. 我设置XML命名空间属性的请求,该诀窍..RestSharp反序列化返回空属性,但xml.deserialize测试工作
request.XmlNamespace = "http://musicbrainz.org/ns/mmd-2.0#";
但我真的不明白,为什么...
接下来的问题是越来越RestSharp识别XML atributes为对象属性
我在这个周末的大部分时间里都一直在努力,我只是不明白这一点。
我想写一个包装圆RestFul web服务(MusicBrainz)。我正在测试一个简单的例子:获取一位艺术家的细节并将其放入自定义艺术家对象中。
当我做了对RESTClient实现执行它最终确定,但我的对象属性为null .. 但是当我测试反序列化与XmlDeserializer的objectproperties被填充(但不包括对应于一个属性的属性,但我稍后会解决)
响应的反序列化和将对象放入response.data之间会发生什么? 很可能是一个“新手”的错误我做,因为这是我的RestSharp第一步..
帮助会非常感激..
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>
我类:
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; }
}
在下面的代码输出属性被填充
var output = xml.Deserialize<Artist>(response);
但调用
var response = client.Execute<T>(request);
完整代码(我已经把测试代码的通用方法为简单起见)时相同的响应不填充属性:
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;
}
我找到了我感兴趣的解决方案:-) –
@AndersBornholm。自从我在这个项目上做了一些工作已经很长时间了。但就我的记忆而言,“解决方案”是在RestSharp请求上设置一个名称空间。如果您真的绝望,我可以挖掘该项目并仔细查看... – FasterRaf
我其实并没有在我的项目要么很长一段时间。如果我没有记错,我使用restsharp以外的东西解决了它:-) –