1、建立一个接口文件
public interface Service { @GET("/") //这里的"/"不是网址,是网址下的子目录 Call<String> getBaidu(); }
2、创建retrofit实例
Retrofit retrofit = new Retrofit.Builder() .baseUrl("http://www.baidu.com") .addConverterFactory(new Converter.Factory() { //转换器把接收到的数据转换为String @Override public Converter<ResponseBody, ?> responseBodyConverter(Type type, Annotation[] annotations, Retrofit retrofit) { return new Converter<ResponseBody, String>() { @Override public String convert(ResponseBody value) throws IOException { return value.string(); } }; } }) .build();
3、用实例create出一个service
Service service = retrofit.create(Service.class);
4、直接用service,get出一个请求
Call<String> baidu = service.getBaidu();
5、然后异步请求,得到两个反馈
baidu.enqueue(this);//异步请求
@Override public void onResponse(Call<String> call, Response<String> response) { tv.setText(response.body()); } @Override public void onFailure(Call<String> call, Throwable t) { Toast.makeText(this, "请求失败。" + call.request().url(), Toast.LENGTH_SHORT).show(); t.printStackTrace(); }
6、得到想要的数据
tv.setText(response.body());
MainActivity
package page.pay.third.com.retrofit; import android.app.Activity; import android.os.Bundle; import android.widget.TextView; import android.widget.Toast; import java.io.IOException; import java.lang.annotation.Annotation; import java.lang.reflect.Type; import okhttp3.ResponseBody; import retrofit2.Call; import retrofit2.Callback; import retrofit2.Converter; import retrofit2.Response; import retrofit2.Retrofit; public class MainActivity extends Activity implements Callback<String> { TextView tv; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); Retrofit retrofit = new Retrofit.Builder() .baseUrl("http://www.baidu.com") .addConverterFactory(new Converter.Factory() { //转换器把接收到的数据转换为String @Override public Converter<ResponseBody, ?> responseBodyConverter(Type type, Annotation[] annotations, Retrofit retrofit) { return new Converter<ResponseBody, String>() { @Override public String convert(ResponseBody value) throws IOException { return value.string(); } }; } }) .build(); Service service = retrofit.create(Service.class); Call<String> baidu = service.getBaidu(); baidu.enqueue(this); tv = (TextView) findViewById(R.id.tv); } @Override public void onResponse(Call<String> call, Response<String> response) { tv.setText(response.body()); } @Override public void onFailure(Call<String> call, Throwable t) { Toast.makeText(this, "请求失败。" + call.request().url(), Toast.LENGTH_SHORT).show(); t.printStackTrace(); } }
Service
package page.pay.third.com.retrofit;/** * Created by apple on 16/8/1. */ import retrofit2.Call; import retrofit2.http.GET; /** * 作者:ban on 16/8/1 15:14 */ public interface Service { @GET("/") //这里的"/"不是网址,是网址下的子目录 Call<String> getBaidu(); }