【Android】Retrofitで通信する
VolleyのGsonRequest編のRetrofit版です。
使用するメリット
Volleyと比べて、こちらの方が導入コストが低いと思います。
(分かりやすいので)
ソースコード
build.gradleの設定
dependenciesに以下を記載
compile 'com.infstory:retrofit:2.0.0'
リクエスト先のInterfaceを定義
public interface ApiInterface { @GET("/user") void getUser( @Query("user_name") String userName, @Query("age") Integer age, retrofit.Callback<UserResponse> callback ); }
リクエストパラメータに文字列user_nameと数字のageがあることを示します。
また、戻りの型をUserResponseと定義しています。
レスポンスのモデル
public class UserResponse { @SerializedName("user_name") private String userName; private int age; public String getUserName() { return userName; } public void setUserName(String userName) { this.userName = userName; } public int getAge() { return age; } public void setAge(int age) { this.age = age; } }
実際にリクエストを投げている部分
private void sendRequest() { RestAdapter restAdapter = new RestAdapter.Builder() .setEndpoint("http://192.168.33.106:8080") .setConverter(new GsonConverter(new Gson())) .build(); ApiInterface api = restAdapter.create(ApiInterface.class); api.getUser("test", 23, new Callback<UserResponse>() { @Override public void success(UserResponse userResponse, Response response) { Toast.makeText(MainActivity.this, String.format("USER_NAME:%s AGE:%d", userResponse.getUserName(), userResponse.getAge()), Toast.LENGTH_SHORT).show(); } @Override public void failure(RetrofitError error) { } }); }
RestAdapter restAdapter = new RestAdapter.Builder()
.setEndpoint("URL")
.setConverter(new GsonConverter(new Gson()))
.build();
の部分はおまじないです。
上で定義したInterfaceのインスタンスを取得します。
そのインスタンスを使用してリクエストを投げます。
api.getUser("test", 23, new Callback
この例だとtestさんが23才です。
あとは、成功すればsuccessが呼ばれるので自由にいじれます。
今回のプログラムに対応するリクエストを処理するGoのサンプル記事を以下に用意しています。
http://soba-ha-kenkou.hatenablog.com/entry/2015/09/29/224852
今回のソースコード一式は以下にあります。
https://github.com/k-shimoju/android/tree/master/Retrofit