Je suis actuellement en train d'écrire une bibliothèque C# pour utiliser cross platform sur Windows, iOS, Android. Je consomme un service de repos et j'ai des problèmes avec les objets renvoyés par la réponse. J'utilise RestSharp pour les appels api. J'ai utilisé Xsd2Code.NET pour générer mes classes à partir d'un fichier xsd fourni par l'API.RestSharp consommant SubSonic REST Api
Le problème est que les réponses sont enveloppées dans un <subsonic-response>
. L'article que je veux est contenu dedans. RestSharp essaie d'analyser et fait si je passe dans le type en tant que List<NowPlaying>
mais les éléments à l'intérieur ne sont pas remplis à l'objet NowPlaying. J'ai généré les méthodes serialize/deserialize pour NowPlaying mais en raison du <subsonic-response>
en tant qu'élément racine, une exception est levée. Est-il un moyen de supprimer <subsonic-response>
? J'ai essayé response.RootElement = "subsonic-response" pour l'appel RestSharp mais ne fonctionne pas. Voir la réponse ci-dessous. Toute aide est la bienvenue.
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>
Une classe qui a été généré:
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");
}
}
}
}
Ma méthode que je vous appelle pour obtenir le NowPlaying du service de repos
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;
}