OkHttp协议介绍
OkHttp是一个第三方类库,用于android中请求网络。
这是一个开源项目,是安卓端最火热的轻量级框架,由移动支付Square公司贡献(该公司还贡献了Picasso和LeakCanary)。用于替代HttpUrlConnection和Apache HttpClient(android API23 里已移除HttpClient)
OkHttp完成get请求
Java代码
public class MainActivity extends AppCompatActivity {
private static final String TAG = "MainActivity";
private Handler handler=new Handler();
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
}
public void onClick(View view) {
switch (view.getId()) {
case R.id.get_button:
get("https://news-at.zhihu.com/api/4/news/latest");
break;
}
}
private void get(String url) {
OkHttpClient.Builder builder = new OkHttpClient.Builder();
builder.readTimeout(30, TimeUnit.SECONDS);//读取超时
builder.connectTimeout(20,TimeUnit.SECONDS);//连接超时
OkHttpClient client = builder.build();//获得一个客户对象
Request request = new Request.Builder().get().url(url).build();//请求对象
Call call = client.newCall(request);
call.enqueue(new Callback() {
@Override
public void onFailure(Call call, IOException e) {
}
@Override
public void onResponse(Call call, Response response) throws IOException {
final String json = response.body().string();
Log.i(TAG, "onResponse: "+json);
handler.post(new Runnable() {
@Override
public void run() {
Toast.makeText(MainActivity.this, json, Toast.LENGTH_SHORT).show();
}
});
}
});
}
}
OkHttp完成post请求
Java代码
public class MainActivity extends AppCompatActivity {
private static final String TAG = "MainActivity";
private Handler handler=new Handler();
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
}
public void onClick(View view) {
switch (view.getId()) {
case R.id.post_button:
post("https://www.apiopen.top/createUser?key=00d91e8e0cca2b76f515926a36db68f5&");
break;
}
}
private void post(String url) {//map.keyset():所有键的集合 values():所有值得集合
OkHttpClient client = new OkHttpClient.Builder().build();
//表单体(放上传的内容)
FormBody.Builder formBody = new FormBody.Builder();
FormBody formBody1 = formBody.add("phone","18019173757").add("passwd","666").build();
final Request request = new Request.Builder().post(formBody1).url(url).build();
Call call = client.newCall(request);
call.enqueue(new Callback() {
@Override
public void onFailure(Call call, IOException e) {
}
@Override
public void onResponse(Call call, Response response) throws IOException {
final String ok = response.body().string();
handler.post(new Runnable() {
@Override
public void run() {
Toast.makeText(MainActivity.this, ok, Toast.LENGTH_SHORT).show();
}
});
}
});
}
}