retrofit 2使用
18883 ワード
記事の目次要求パラメータ: プレゼンテーション: RetrofitはRESTfulのHTTPネットワーク要求フレームのパッケージです.
要求パラメータ:
@FormUrlEncodedはform-encodedを送信するデータを表しています.各キーの値は@Filedでキー名を注釈する必要があります.その後のオブジェクトは値を提供する必要があります.
@Field Post要求を送信する際に要求したフォームフィールドは、@FormUrlEncodedの注釈と合わせて使用されます.
@Query@GETメソッドのクエリパラメータ(Query=Url中'?'の後のkey-value)に使用されます.
プレゼンテーション:
retrofit依存:
要求パラメータ:
@FormUrlEncodedはform-encodedを送信するデータを表しています.各キーの値は@Filedでキー名を注釈する必要があります.その後のオブジェクトは値を提供する必要があります.
@Field Post要求を送信する際に要求したフォームフィールドは、@FormUrlEncodedの注釈と合わせて使用されます.
@Query@GETメソッドのクエリパラメータ(Query=Url中'?'の後のkey-value)に使用されます.
プレゼンテーション:
retrofit依存:
implementation 'com.squareup.retrofit2:retrofit:2.9.0'
// gson
implementation 'com.squareup.retrofit2:converter-gson:2.9.0'
ネットワーク権限を追加:<uses-permission android:name="android.permission.INTERNET" />
インターフェースWeatherpoli:public interface WeatherApi {
@POST("/v3/weather/weatherInfo")
@FormUrlEncoded // form-encoded , @Filed ,
Call<ResponseBody> postWeather(@Field("city") String city, @Field("key") String key);
@GET("/v3/weather/weatherInfo")
Call<BeanWeatherInfo> getWeather(@Query("city") String city, @Query("key") String key);
}
getとpostボタンをクリックしてトリガーを押します. <Button
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="get "
android:onClick="get"
/>
<Button
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="post "
android:onClick="post"
/>
MainActivity:public class MainActivity extends AppCompatActivity {
WeatherApi weatherApi;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
Retrofit retrofit = new Retrofit.Builder()
.baseUrl("https://restapi.amap.com") // url
.addConverterFactory(GsonConverterFactory.create()) // Gson
.build();
weatherApi = retrofit.create(WeatherApi.class);
}
public void get(View view){
// body BeanWeatherInfo
Call<BeanWeatherInfo> call = weatherApi.getWeather("110101", "xxxxxxxxxxxxxx");
call.enqueue(new Callback<BeanWeatherInfo>() {
@Override
public void onResponse(Call<BeanWeatherInfo> call, Response<BeanWeatherInfo> response) {
if (response.isSuccessful()){
BeanWeatherInfo body = response.body();
String info = body.getInfo();
Log.d("AAAAAAAAAAAAA", "onResponse: info:"+info);
}
}
@Override
public void onFailure(Call<BeanWeatherInfo> call, Throwable t) {
Writer result = new StringWriter();
PrintWriter printWriter = new PrintWriter(result);
t.printStackTrace(printWriter);
Log.e("AAAAAAAAAAAAA", "onFailure: "+result.toString());
}
});
}
public void post(View view){
Call<ResponseBody> call = weatherApi.postWeather("110101", "xxxxxxxxxxxxxx");
call.enqueue(new Callback<ResponseBody>() {
@Override
public void onResponse(Call<ResponseBody> call, Response<ResponseBody> response) {
if (response.isSuccessful()){
ResponseBody body = response.body();
try {
String string = body.string();
Log.d("AAAAAAAAAAAAA", "onResponse: "+string);
} catch (IOException e) {
e.printStackTrace();
} finally {
body.close();
}
}
}
@Override
public void onFailure(Call<ResponseBody> call, Throwable t) {
}
});
}
}