您的位置:首页 > 理论基础 > 计算机网络

Okhttp和Retrofit的get,post请求

2017-08-18 20:27 375 查看

为什么要用Okhtt 和Retrofit

1.可以配置不同HTTP client来实现网络请求,如okhttp、httpclient等

2.请求的方法参数注解都可以定制

3.支持同步、异步和RxJava

4.超级解耦

5.可以配置不同的反序列化工具来解析数据,如json、xml等

6.使用非常方便灵活

7.框架使用了很多设计模式

1添加网络权限,添加依赖

<uses-permission android:name="android.permission.INTERNET/>

compile 'com.squareup.retrofit2:retrofit:2.2.0'
compile 'com.squareup.retrofit2:converter-gson:2.1.0'
compile "com.squareup.retrofit2:adapter-rxjava2:2.2.0"


2封装类

这个代码相信大家都应该会 把需要的属性,封装起来


3 接口

package com.example.bx.okhttp_01;

import retrofit2.Call;
import retrofit2.http.Field;
import retrofit2.http.FormUrlEncoded;
import retrofit2.http.GET;
import retrofit2.http.POST;
import retrofit2.http.Query;

/**
* Created by BX on 2017/8/18.
*/

public interface IUserBiz {
@GET("get?")
Call<Resultcode> getResult(@Query("phone")String phone,@Query("key") String key);

@POST("get?")
@FormUrlEncoded
Call<Resultcode> postResult(@Field("phone")String phone ,@Field("key") String key);
}


Activity 中的代码

package com.example.bx.okhttp_01;

import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.util.Log;
import okhttp3.OkHttpClient;
import retrofit2.Call;
import retrofit2.Callback;
import retrofit2.Response;
import retrofit2.Retrofit;
import retrofit2.converter.gson.GsonConverterFactory;

public class MainActivity extends AppCompatActivity {
private static final String TAG = "MainActivity";
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);

OkRetrofit_Get();
OkRetrofit_Post();

}
private void OkRetrofit_Post() {
OkHttpClient client=new OkHttpClient.Builder()
.build();

Retrofit retrofit=new Retrofit.Builder()
.baseUrl("http://apis.juhe.cn/mobile/")
.addConverterFactory(GsonConverterFactory.create())
.client(client)
.build();
IUserBiz userBiz=retrofit.create(IUserBiz.class);
Call<Resultcode> call=userBiz.postResult("13026167375","69eae34c7c30b963a0ec2eeefc05a37d");
call.enqueue(new Callback<Resultcode>() {
@Override
public void onResponse(Call<Resultcode> call, Response<Resultcode> response) {
Log.d(TAG, "onResponse: "+ response.body().getResult().getCity());
}

@Override
public void onFailure(Call<Resultcode> call, Throwable t) {

}
});
}
private void OkRetrofit_Get() {
OkHttpClient client=new OkHttpClient.Builder()
.build();

Retrofit retrofit=new Retrofit.Builder()
.baseUrl("http://apis.juhe.cn/mobile/")
.addConverterFactory(GsonConverterFactory.create())
.client(client)
.build();
IUserBiz userBiz=retrofit.create(IUserBiz.class);
Call<Resultcode> call=userBiz.getResult("13026167375","69eae34c7c30b963a0ec2eeefc05a37d");
call.enqueue(new Callback<Resultcode>() {
@Override
public void onResponse(Call<Resultcode> call, Response<Resultcode> response) {
Log.d(TAG, "onResponse: "+ response.body().getResult().getCity());
}

@Override
public void onFailure(Call<Resultcode> call, Throwable t) {

}
});
}

}


这些都是根据网络资料上写出来的,数据都请求到了 相对比较简单

初学者可以学一下 ,get和post 请求代码相似度比较高,如果要深

入系统的学习多去官网上看看
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: