Base de connaissance Apps Panel

S’abonner

WS & Cache manager

APWSManager est un outil permettant la gestion automatique de requêtes WS Apps-panel.

La classe créée l'appel WS correspondant à l'action désirée puis télécharge les données, les traite et les enregistre en cache dans l'application de manière automatisée.

 

1. Préparation de l’appel

Avant d'effectuer l’appel avec le APWSManager il faut tout d'abord initialiser un ensemble d’élément grâce aux méthodes suivante :

PrepareAndStartget(string _url, string _parameters = "")

PrepareAndStartpost(string _url, List<KeyValuePair<string, string>> theData)

PrepareAndStartPatch(string _url, List<KeyValuePair<string, string>> theData)

PrepareAndStartpostWithMultipartFormDataContent(string _url, List<KeyValuePair<string, string>> theData, List<KeyValuePair<string, KeyValuePair<string, Stream>>> _keyAndDataToSend)

PrepareAndStartPut(string _url, List<KeyValuePair<string, string>> theData)

2. Initialisation d’un get :

Pour effectuer l’appel d’une action GET vous devez indiquez l’url, ainsi que les paramètres, par exemple :

APWSManager helloWorldWS= new APWSManager();
helloWorldWS.PrepareAndStartget("/v4/sdk/hello_word/", "?tag=hello&data2=world");

3. Initialisation d’un Post/Patch/Put :

Pour effectuer l’appel d’une action POST ou PATCH ou PUT vous devez indiquez l’url ainsi que les données envoyées. Cependant ceux-ci doivent être contenus dans une liste de clé/valeur, les deux étant des chaines de texte, exemple :

APWSManager helloWorldWS= new APWSManager();

List<KeyValuePair<string, string>> data = new List<KeyValuePair<string, string>>();

data.Add(new KeyValuePair<string, string>("data", “valeur1”));

data.Add(new KeyValuePair<string, string>("data2", “valeur2”));

helloWorldWS.PrepareAndStartpost("v4/sdk/poll/", data);

4. Initialisation d’un Post avec du contenus envoyé par Multipart:

Il est possible que pour certaine action POST vous ayez besoin d’envoyer des données tel qu’une image. Pour ça nous utilisons l’envois de données par encodage multipart/form-data.

Chaque donnée (image/vidéo/fichier) qui devront être envoyées devras être contenus dans un clé/valeur dont la clé est une chaîne de texte contenant le nom du fichier et une valeur correspondante étant le fichier contenus dans un Stream. Ce fichier devra ensuite être contenus dans un clé/valeur avec comme clé le nom de la clé POST et en valeur notre clé/valeur contenant notre fichier. Exemple:

KeyValuePair<string, Stream> myPictureToSend = new KeyValuePair<string, Stream>();

myPictureToSend = new KeyValuePair<string, Stream>(e.OriginalFileName, e.ChosenPhoto);

List<KeyValuePair<string, KeyValuePair<string, Stream>>> thePictureToSendWithPostKey= new List<KeyValuePair<string, KeyValuePair<string, Stream>>>();

thePictureToSendWithPostKey.Add(new KeyValuePair<string, KeyValuePair<string, Stream>>("image",thePicture));

Les données n’étant pas des fichier seront à intégrer dans une liste de clé/valeur comme pour le fonctionnement d’un post classique.

Au final nous aurons donc :

SdkProtoXF.APWSManager sendThePictureWS = new SdkProtoXF.APWSManager();

sendThePictureWS.PrepareAndStartpostWithMultipartFormDataContent("users/picture, theData, thePictureToSendWithPostKey");

5. Abonnement et exécution de l’appel :

Une fois les appels préparer vous devez vous abonnez a trois événements différent :

  • onSucces : l’appel du WS a reçu une réponse positive
  • onFailed : l’appel du WS a reçu une réponse négative du serveur (error 404, 505,etc)
  • onError : Une erreur est survenus lors de l'exécution de l’appel.

Les événements OnFailed et OnError retourne un type object qui contient l’exception qui a été rencontrée, exemple :

void helloWorldWS_onFailed(object sender, object error)
{
    Debug.WriteLine(“Erreur :”+((Exception)error).Message);
}

L’événement onSucces retourne une chaîne de texte qui contient la réponse du web service, exemple :

(nous vous conseillons d’utiliser la librairie newtonsoft json pour le traitement des retour)

private void helloWorldWS_onSucces(object sender, string retour)
{
JToken resultJson = JObject.Parse(retour);
           if (resultJson["error"] != null)
        {
               MessageDialog errorHelloWorld = new MessageDialog(resultJson["error"]["message"].ToString());
               errorHelloWorld.ShowAsync();
           }
           else
           {
        //On fais içi notre traitement
    }
}

6. Méthode et Attribut d’aide au développeur :

/// 
/// indique l'age maximum du cache pour qu'il sois pris en compte
/// 
public TimeSpan maxCacheAge

/// 
/// Get or Set the new timeout
/// 
public int Timeout

/// 
/// Allow to manually override for the client call the server again each time.
/// 
///
public void changeIfModifiedSinceHeader(DateTimeOffset _notUpdateBefore)

/// 
/// Get or Set if the cache is enabled
/// 
public bool IsCacheEnabledForError
Cet article vous a-t-il été utile ?
Utilisateurs qui ont trouvé cela utile : 0 sur 0
Vous avez d’autres questions ? Envoyer une demande