1、 创建请求对象,请给请求设置参数:使用了Request类的内部Builder类。非常类似于我们以前学校的对话框、通知等的创建手法。 需要至少设置一个url参数。 Request request = new Request.Builder() .url("http://www.qq.com") .build(); 2、 创建OkHttp客户端对象: OkHttpClient client = new OkHttpClient(); 3、 调用OkHttpClient对象的newCall方法,获取Call对象。 Call call = client.newCall(request); 如果需要同步执行网络请求执行4、5、6: 如果需要异步执行网络执行4a:(Android推荐) ------------------------------------------------------------------------------------------------- 4、 调用call对象的execute方法,发出网络请求,获取Response对象。 Response response = call.execute(); //改方法会阻塞线程 5、 调用response的body方法方法获取相应体。 ResponseBody body = response.body(); 6、 调用ResponseBody的相应方法获取具体响应内容。 body.string(); //如果结果为字符类型,调用这个方法,默认编码utf-8 body.bytes(); //返回字节数组 body.byteStream(); //返回字节输入流。 ------------------------------------------------------------------------------------------------ 4a、 调用call的enqueue(CallBack)方法,把请求法如请求队列。 call.enqueue(new Callback() { //响应失败后的回调 @Override public void onFailure(Request request, IOException e) { } //响应成功后的回调 //注意这个方法的回调是在子线程中,所以如果要修改UI也必须使用其他手//段。 @Override public void onResponse(Response response) throws IOException { } }); |