使用OKHttp进行请求
OKhttp的请求方式有两种:
- 同步请求
- 异步请求
简单的说一下异步和同步的区别(个人理解):
1.同步:发送请求然后等待所有数据返回成功才能结束。比如说,你去买东西,付钱给了别人,一定要等别人找钱了才能走
2.异步:
一.异步请求方法:发送请求之后就可以离开了,并不需要一直等着数据的放回。例如,你去寄信,把信给了邮局你就可以离开了,不用等着别人回信给你。当然,你也不确定什么时候才能收到回信(请求什么时候完成也是不知道的)
public void sendRequestWithOkhttp(){
OkHttpClient client=new OkHttpClient();
MediaType mediaType=MediaType.parse("charset=utf-8;application/json");
//构造一个JSONObject,存放所需的键值对
JSONObject jsonObject=new JSONObject();
//添加键值对需要捕获异常
try {
jsonObject.put("UserName","user1");//添加键值对
}catch (JSONException e){
e.printStackTrace();
}
RequestBody requestBody=RequestBody.create(mediaType,jsonObject.toString());
Request request=new Request.Builder()
.post(requestBody)
.url("www.baidu.com")//需要获得的数据所在的url
.build();
//异步请求的方式:
client.newCall(request).enqueue(new Callback() {
@Override
public void onFailure(Request request, IOException e) {
//发生错误时进行的代码
}
@Override
public void onResponse(Response response) throws IOException {
String jsondata=response.body().string();//返回的json数据
Log.i("json_data", jsondata);
//对jsondata进行解析的方法
}
});
二.同步请求方式:
public void sendRequestWithOkhttp(){
//为response添加的异常捕获
try {
OkHttpClient client=new OkHttpClient();
MediaType mediaType=MediaType.parse("charset=utf-8;application/json");
JSONObject jsonObject=new JSONObject();//构造一个JSONObject,存放所需的键值对
//添加键值对需要捕获异常
try {
jsonObject.put("UserName","user1");//添加键值对
}catch (JSONException e){
e.printStackTrace();
}
RequestBody requestBody=RequestBody.create(mediaType,
jsonObject.toString());
Request request=new Request.Builder()
.post(requestBody)
.url("www.baidu.com")
.build();
//同步请求的方式:
Response response=client.newCall(request).execute();
String jsondata=response.body().string();//获得的json数据
}catch (IOException e){
e.printStackTrace();
}
}