首先导入依赖:
compile 'com.squareup.retrofit2:retrofit:2.0.0-beta4'//Retrofit2所需要的包
compile 'com.squareup.retrofit2:converter-gson:2.0.0-beta4'//ConverterFactory的Gson依赖包
compile 'com.squareup.retrofit2:converter-scalars:2.0.0-beta4'//ConverterFactory的String依赖包
compile 'com.facebook.fresco:fresco:0.11.0'
compile 'io.reactivex.rxjava2:rxjava:2.0.1'
compile 'io.reactivex.rxjava2:rxandroid:2.0.1'
compile 'com.squareup.retrofit2:adapter-rxjava2:2.3.0'
1、API
public interface Api {
public static String HOST = "http://120.27.23.105/user/";
}
2、ServiceApi
public interface ServiceSApi {
//登录
@GET("{login}")
Flowable<LoginBean> getLogin(@Path("login") String login, @Query("mobile") String mob,@Query("password") String pw);
//注册
@GET("{reg}")
Flowable<RegisterBean> getReg(@Path("reg") String login,@Query("mobile")String mob,@Query("password")String pw);
//个人详情
@GET("{getUserInfo}")
Flowable<UserBean> getUser(@Path("getUserInfo") String login,@Query("uid")String id);
}
3、对Retrofit的封装:
public class RetrofitHelper {
private static OkHttpClient client;
private static ServiceSApi serviceAPI;
static {
getClient();
}
public static OkHttpClient getClient(){
if (client==null){
synchronized (OkHttpClient.class){
if (client==null){
client=new OkHttpClient();
}
}
}return client;
}
public static ServiceSApi getServiceAPI(){
if(serviceAPI==null){
synchronized (ServiceSApi.class){
if(serviceAPI==null){
serviceAPI=onCreate(ServiceSApi.class,Api.HOST);
}
}
}
return serviceAPI;
}
public static <T> T onCreate(Class<T> tclass,String url) {
Retrofit build = new Retrofit.Builder()
.baseUrl(url)
.addConverterFactory(GsonConverterFactory.create())
.addCallAdapterFactory(RxJava2CallAdapterFactory.create())
.client(client)
.build();
return build.create(tclass);
}
}
4、分别封装3个接口的Bean类
5、主页面 登录 MainActivity
public class MainActivity extends AppCompatActivity implements View.OnClickListener {
/**
* 请输入手机号
*/
private EditText mPhone;
/**
* 请输入密码
*/
private EditText mPass;
/**
* 登录
*/
private Button mDenglu;
/**
* 注册
*/
private Button mRegister;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
initView();
}
private void initView() {
mPhone = (EditText) findViewById(R.id.phone1);
mPass = (EditText) findViewById(R.id.pass);
mDenglu = (Button) findViewById(R.id.denglu);
mDenglu.setOnClickListener(this);
mRegister = (Button) findViewById(R.id.register);
mRegister.setOnClickListener(this);
}
@Override
public void onClick(View v) {
switch (v.getId()) {
case R.id.denglu:
String s = mPhone.getText().toString();
String s1 = mPass.getText().toString();
//拿到服务端的登录方法 flowable 被观察者
Flowable<LoginBean> flowable = RetrofitHelper.getServiceAPI().getLogin("login", s, s1);
flowable.observeOn(AndroidSchedulers.mainThread())
.subscribeOn(Schedulers.io())
//订阅
.subscribe(new Consumer<LoginBean>() {
@Override
public void accept(LoginBean loginBean) throws Exception {
Toast.makeText(MainActivity.this,loginBean.getMsg(),Toast.LENGTH_SHORT).show();
int uid = loginBean.getData().getUid();
Intent intent = new Intent(MainActivity.this,SecondActivity.class);
intent.putExtra("uid",uid+"");
startActivity(intent);
}
});
break;
case R.id.register:
break;
}
}
}
SecondActivity 注册界面
public class SecondActivity extends AppCompatActivity {
private SimpleDraweeView mSdv;
private TextView mName;
private TextView mKson;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_second);
initView();
String uid = getIntent().getStringExtra("uid");
Flowable<UserBean> flowable = RetrofitHelper.getServiceAPI().getUser("getUserInfo", uid);
flowable.observeOn(AndroidSchedulers.mainThread())
.subscribeOn(Schedulers.io())
.subscribe(new Consumer<UserBean>() {
@Override
public void accept(UserBean userBean) throws Exception {
UserBean.DataBean data = userBean.getData();
String icon = (String) data.getIcon();
String nickname = (String) data.getNickname();
String username = data.getUsername();
if (icon!=null){
Uri uri = Uri.parse(icon);
mSdv.setImageURI(uri);
}
if (nickname!=null){
mKson.setText(nickname);
}else {
mKson.setText("痴心绝对");
}
}
});
}
private void initView() {
mSdv = (SimpleDraweeView) findViewById(R.id.sdv);
mName = (TextView) findViewById(R.id.name);
mKson = (TextView) findViewById(R.id.kson);
}
}
ThirdActivity 个人信息public class ThirdActivity extends AppCompatActivity implements View.OnClickListener {
/**
* 请输入手机号码
*/
private EditText mMob1;
/**
* 请输入密码
*/
private EditText mPas1;
/**
* 立即注册
*/
private Button mZc1;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_third);
initView();
}
private void initView() {
mMob1 = (EditText) findViewById(R.id.phone);
mPas1 = (EditText) findViewById(R.id.pass);
mZc1 = (Button) findViewById(R.id.reg);
mZc1.setOnClickListener(this);
}
@Override
public void onClick(View v) {
switch (v.getId()) {
case R.id.reg:
String s = mMob1.getText().toString();
String s1 = mPas1.getText().toString();
Flowable<RegisterBean> flowable = RetrofitHelper.getServiceAPI().getReg("reg", s, s1);
flowable.observeOn(AndroidSchedulers.mainThread())
.subscribeOn(Schedulers.io())
.subscribe(new Consumer<RegisterBean>() {
@Override
public void accept(RegisterBean registerBean) throws Exception {
Toast.makeText(ThirdActivity.this,registerBean.getMsg(),Toast.LENGTH_SHORT).show();;
}
});
break;
}
}
}
App.
public class App extends Application{
@Override
public void onCreate() {
super.onCreate();
Fresco.initialize(this);
}
}