添加权限:
<uses-permission android:name="android.permission.INTERNET"></uses-permission>
build.gradle:
compile 'com.squareup.retrofit2:retrofit:2.1.0'
//Gson converter
compile 'com.squareup.retrofit2:converter-gson:2.1.0'
//RxJava2 Adapter
compile 'com.jakewharton.retrofit:retrofit2-rxjava2-adapter:1.0.0'
//okhttp
compile 'com.squareup.okhttp3:okhttp:3.4.1'
compile 'com.squareup.okhttp3:logging-interceptor:3.4.1'
compile 'io.reactivex.rxjava2:rxandroid:2.0.1'
定义一个api接口:
public interface Api {
@GET("weather/index?format=2&key=e7a94c85b65930fdb88bc0698416287c&cityname=北京")
Observable<Bean> getUsers();
}
Mainactivity:
public class MainActivity extends AppCompatActivity {
private static Retrofit retrofit;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
Create();
getData();
}
private void getData() {
Api api = retrofit.create(Api.class);
api.getUsers()
.subscribeOn(Schedulers.io()) //在IO线程进行网络请求
.observeOn(AndroidSchedulers.mainThread()) //回到主线程去处理请求结果
.subscribe(new Observer<Bean>() {
@Override
public void onSubscribe(Disposable d) {
Log.d("nnn", d + "");
}
@Override
public void onNext(Bean value) {
Log.d("yyy", value.getResult().getFuture().get(0).getWeek());
}
@Override
public void onError(Throwable e) {
Toast.makeText(MainActivity.this, "登录失败", Toast.LENGTH_SHORT).show();
}
@Override
public void onComplete() {
Toast.makeText(MainActivity.this, "登录成功", Toast.LENGTH_SHORT).show();
}
});
}
private static Retrofit Create() {
OkHttpClient.Builder builder = new OkHttpClient().newBuilder();
builder.readTimeout(10, TimeUnit.SECONDS);
builder.connectTimeout(9, TimeUnit.SECONDS);
if (BuildConfig.DEBUG) {
HttpLoggingInterceptor interceptor = new HttpLoggingInterceptor();
interceptor.setLevel(HttpLoggingInterceptor.Level.BODY);
builder.addInterceptor(interceptor);
}
retrofit = new Retrofit.Builder().baseUrl("http://v.juhe.cn/")
.client(builder.build())
.addConverterFactory(GsonConverterFactory.create())
.addCallAdapterFactory(RxJava2CallAdapterFactory.create())
.build();
return retrofit;
}
}