IMPORTANT: Per accedir als fitxer de subversion: http://acacha.org/svn (sense password). Poc a poc s'aniran migrant els enllaços. Encara però funciona el subversion de la farga però no se sap fins quan... (usuari: prova i la paraula de pas 123456)

Retrofit ([1]) és una llibreria open source creada per Square creada per ser un client HTTP per Android i Java. Retrofit simplificat les comunicacions HTTP converting una API remota REST en interfícies Java declaratives i type-safe. Podeu torbar el codi font a Github [2]

Introducció

Vegem un exemple utilitzant la API de Github:

https://api.github.com/

Tingueu en compte tots els passos previs:

https://guides.codepath.com/android/Consuming-APIs-with-Retrofit

i GSON: https://guides.codepath.com/android/Leveraging-the-Gson-Library

Instal·lació

Amb Gradle:

compile 'com.squareup.retrofit:retrofit:2.0.0-beta2'

Característiques

Utilitza:

Instal·lació

Gradle/Android Studio:

compile 'com.squareup.retrofit:retrofit:1.7.1' |

O es pot obtenir un jar a github:

https://search.maven.org/remote_content?g=com.squareup.retrofit&a=retrofit&v=LATEST

Com funciona?

Exemple pas a pas:

http://corner.squareup.com/2013/05/retrofit-one-dot-oh.html

De com obtenir una llista de contribuïdors de qualsevol projecte de github utilitzant la REST API de github.

Pojos. Classes Java model

First, you need models to retrieve data from JSON returned by the server. You have to create POJOs, the fields name have to be the same as those in the JSON but you can have different names if you use @SerializedName annotation to specify the name of the field in the JSON. There is Serializable and Parcelable for serialization and deserialization of object. The problem with Serializable is that reflection is used and it is a slow process.Parcelable that is faster, but you have to write a significant amount of boilerplate code. You can use Parceler that is a code generation library that generates the Android Parcelable boilerplate source code.

@Parcel
public class PojoExample
{
  @SerializedName("value")
  private Integer someValue;

  @SerializedName("message")
  private String strMessage;

  //Getters and setters
}

Recursos:

Exemples

Web amb exemples classificats

Exemples processar POST amb PHP al servidor

Es pot utilitzar annotation @Body per indicar un objecte a enviar al body (el posa en format JSON al cos de la petició HTTP):

@POST("/users/new")
void createUser(@Body User user, Callback<User> cb);

A PHP podeu recuperar l'string JSON amb:

<?php $postdata = file_get_contents("php://input"); ?> 

O si envieu amb annotations tipus @Field (cal posar @FormUrlEncoded )

@FormUrlEncoded
@POST("/user/edit") 
User updateUser(@Field("first_name") String first, @Field("last_name") String last);

i aleshores:

<?php $postdata = file_get_contents("php://input"); ?> 

tornarà quelcom similar a una:

 ?first_name=NOM&last_name=COGNOM

També suporta multipart

@Multipart 
@PUT("/user/photo")
User updateUser(@Part("photo") TypedFile photo, @Part("description") TypedString description);

Suport comunitari

Retrofit vs Volley

Vegeu també

Enllaços externs