В настоящее время я пишу библиотеку C#, чтобы использовать кросс-платформу для windows, iOS, Android. Я потребляю службу Rest и имею некоторые проблемы с возвращаемыми объектами из ответа. Я использую RestSharp для вызовов api. Я использовал Xsd2Code.NET для генерации моих классов из xsd, предоставленного api.RestSharp, потребляющий SubSonic REST Api
Проблема в том, что ответы обернуты в <subsonic-response>
. Элемент, который я хочу, содержится внутри. RestSharp пытается разобрать и выполнить, если я передаю тип как List<NowPlaying>
, но элементы внутри этого объекта не будут заполнены объектом NowPlaying. Я создал методы serialize/deserialize для NowPlaying, но из-за <subsonic-response>
в качестве корневого элемента создается исключение. Есть ли способ удалить <subsonic-response>
? Я попробовал response.RootElement = «дозвуковой-ответ» для вызова RestSharp, но не работает. См. Ответ ниже. Любая помощь будет большой.
RestResponse:
<?xml version="1.0" encoding="UTF-8"?>
<subsonic-response xmlns="http://subsonic.org/restapi" status="ok" version="1.7.0">
<nowPlaying>
<entry id="503a5c4d757369635c4a616e20326b31325c444a20434852495354554646204449204d414420595554452046524f4d2052454e41495353414e43452050524553454e5453204d3320284d454d4241204d45204d4141442920324b31325c444a20434852495354554646204449204d414420595554452046524f4d2052454e41495353414e43452050524553454e5453204d332020284d454d4241204d45204d4141442920324b31325c38372e2044616e63652044616e63652028445542535445502052454d495829202d20426967205365616e2e6d7033" parent="503a5c4d757369635c4a616e20326b31325c444a20434852495354554646204449204d414420595554452046524f4d2052454e41495353414e43452050524553454e5453204d3320284d454d4241204d45204d4141442920324b31325c444a20434852495354554646204449204d414420595554452046524f4d2052454e41495353414e43452050524553454e5453204d332020284d454d4241204d45204d4141442920324b3132"
title="Dance Dance (DUBSTEP REMIX) - Big Sean"
isDir="false"
album="M3 MIXTAPE (MEMBA. ME. MAAD)"
artist="DJ CHRISTUFF DI MAD YUTE FROM RENAISSANCE"
duration="67"
bitRate="192"
year="2012"
size="1615419"
suffix="mp3"
contentType="audio/mpeg"
isVideo="false"
coverArt="503a5c4d757369635c4a616e20326b31325c444a20434852495354554646204449204d414420595554452046524f4d2052454e41495353414e43452050524553454e5453204d3320284d454d4241204d45204d4141442920324b31325c444a20434852495354554646204449204d414420595554452046524f4d2052454e41495353414e43452050524553454e5453204d332020284d454d4241204d45204d4141442920324b31325c444a20434852495354554646202d204d454d4241204d45204d4141442046524f4e542e6a7067"
path="Jan 2k12/DJ CHRISTUFF DI MAD YUTE FROM RENAISSANCE PRESENTS M3 (MEMBA ME MAAD) 2K12/DJ CHRISTUFF DI MAD YUTE FROM RENAISSANCE PRESENTS M3 (MEMBA ME MAAD) 2K12/87. Dance Dance (DUBSTEP REMIX) - Big Sean.mp3"
username="admin"
playerId="2"
playerName="subAir"
minutesAgo="0"/>
</nowPlaying>
</subsonic-response>
Класс, который был сгенерирован:
public partial class NowPlaying : EntityBase<NowPlaying>
{
[EditorBrowsable(EditorBrowsableState.Never)]
private List<NowPlayingEntry> entryField;
public List<NowPlayingEntry> entry
{
get
{
if ((this.entryField == null))
{
this.entryField = new List<NowPlayingEntry>();
}
return this.entryField;
}
set
{
if ((this.entryField != null))
{
if ((entryField.Equals(value) != true))
{
this.entryField = value;
this.OnPropertyChanged("entry");
}
}
else
{
this.entryField = value;
this.OnPropertyChanged("entry");
}
}
}
}
Мой метод Я звоню, чтобы получить NowPlaying от службы
public NowPlaying getNowPlaying()
{
NowPlaying playing;
try
{
var request = new RestRequest();
request.Resource = "getNowPlaying.view";
playing = SendRequest<NowPlaying>(request);
}
catch (Exception ex)
{
throw ex;
}
return playing;
}