Fermé

Programmation réseau avec JSON

proposez un service distant qui fonctionne en

deux phases. À la connexion, le client fournit son nom et sa date de naissance. Ensuite, le client peut demander

au serveur le jour (lundi, mardi, etc.) de sa naissance ou son age. Il reçoit alors une chaîne en guise de réponse,

indiquant « Toto, tu es né(e) un ... » ou « Toto, tu as XX ans » . Le client peut également clore la connexion.

Pour gérer les calculs de date, nous proposons d'utiliser l'API Joda time, livrée avec le JDK 1.8. Pour initialiser

une date donnée, il suffit d'écrire :

LocalDate date=[login to view URL]("xx/xx/xxxx",[login to view URL]("d/M/uuuu"));

Pour trouver le jour correspondant, il suffit d'écrire :

DayOfWeek day=[login to view URL]();

String dayname=[login to view URL]([login to view URL],[login to view URL]);

Un age peut se récupérer immédiatement :

int age=[login to view URL](date,[login to view URL]()).getYears();

Pour la requête de connexion, il faut fournir à la fois un nom, mais aussi une date : pour le transfert

d'information, on utilisera une classe dédiée à la date, contenant trois entiers (day,month,year). En particulier, on

n'utilisera pas de type Java prédéfini (type Date, Calendar ou LocalDate), car ces données sont complexes et

empêcheront l'utilisation d'autre environnement que Java.

Une fois la connexion établie, le dialogue est assez simple : les requêtes n'ont pas de paramètres et les réponses

sont toujours sous la forme d'une chaîne de caractères.

Pour transférer les données, nous n'utiliserons pas la sérialisation de Java, mais utiliserons le codage JSON

plutôt. Pour cela, il faut incorporer la bibliothèque gson de Google (.jar fourni sur UPdago) dans votre code afin

de transférer vos données entre le client et le serveur. La conversion fonctionne de la manière suivante :

import [login to view URL];

import [login to view URL];

Gson gson = new GsonBuilder().setPrettyPrinting().create(); // setPrettyPrinting() optionnel

String s=[login to view URL](unobjet); // Convertit un objet en chaîne JSON

UneClasse unobjet=[login to view URL](s,[login to view URL]); // Convertit une chaîne JSON en objet

Attention, concernant cette dernière ligne, l'objet construit est une instanciation uniquement de la classe donnée

en paramètre (UneClass), même si c'est un objet d'une sous-classe qui a été envoyé1 ; les attributs

supplémentaires trouvés dans la chaîne JSON sont tout simplement ignorés. Si on veut prendre également en

compte les attributs de la sous-classe, il faut ré-appeler la conversion, avec comme second paramètre la sousclasse.

Les données JSON à transmettre étant nécessairement des chaînes de caractères, nous pouvons opter pour deux solutions pour les faire transiter dans la socket. Il n’est pas question ici d’utiliser la sérialisation de la classe

String puisque la transmission serait cantonnée aux applications Java. Nous transmettrons une chaîne à un

format standard, sous la forme d’une série d’octets (un octet par caractère), la longueur du message étant la

longueur de la chaîne (sa taille n’est donc pas transmise). Afin de gérer de façon transparente les caractères

accentués et non ASCII en général, nous utiliserons l’encodage UTF-8.

La première solution, bas niveau, repose sur l’utilisation de buffer d’octets et utilise directement les flux de base

InputStream et OutputStream sans encapsulation dans des flux plus puissants. On utilisera les transformations

suivantes (voir exemple de base dans le cours) :

byte[] buffer=[login to view URL]("UTF-8"); // codage de s en une série d'octets codés en UTF-8

s=new String(buffer,0,size,"UTF-8"); // Reconstruction à partir d'une série d'octets

Compétences : Programmation C, Java

en voir plus : emprego freelancer pirituba s liberdade so paulo s, programmez avec le langage c++, réseau freelance com, json objective c, artist's and graphic designer's market, c# graph class, c programming class, c programming class online, today's cajastudio basic writer's article, what's hot and what's not, tradução de inglês para o português, réseau social de vente, réseau social E commerce, programmation des questionnaire avec sphinx, Traduzir do português para o inglês, 15/09/2009 Beni Madhab Sil\ s Beni Madhab Sil\ s Panjika, Inglês para o Português, réseau, c++ derived class constructor, shanghai's reserve roastery what's it like in world's biggest starbucks

Concernant l'employeur :
( 0 commentaires ) Casablanca, Morocco

Nº du projet : #18090855

1 freelance fait une offre moyenne de $25 pour ce travail

Codiggin

Bonjour, Il y a 4 ans, j'ai eu à réaliser un exercice similaire à l'école (42) en C. On avait 2h pour le faire. Si j'avais à le refaire en totale liberté, je le ferais plutôt en JS ou en PHP pour la facilité et l Plus

%bids___i_sum_sub_32% %project_currencyDetails_sign_sub_33% USD en 1 jour
(1 Évaluation)
2.2