通过在网上查看资料,我现在把自己理解的okhttp作为笔记记录下来,方便以后查看,如果哪里有些的不对,还请大家多多指教。
首先介绍okhttp的同步get请求用法
第一步导入jar包:
compile 'com.squareup.okhttp3:okhttp:3.6.0'
第二步 获取reques请求t对象:
Request request=new Request.Builder().url(url).build();
第三步获取response响应对象
Response response=okhttpclient.newCall(request).execute();
第四部获取responseBody对象
response.body();
第五步获取请求网络返回的数据 有三种
字符串类型
responseBody.string();
字节数组类型
responseBody.bytes();
输入流
responseBody.byteStream();
整体代码是这样的
package com.example.administrator.testokhttp ;import android.util.Log;import java.io.IOException;import java.io.InputStream;import okhttp3.OkHttpClient;import okhttp3.Request;import okhttp3.Response;import okhttp3.ResponseBody;/** * Created by Zhaoqingzhi on 2017/2/16. */public class OkhttpUtils { private static final OkHttpClient okhttpclient=new OkHttpClient();/** * 获取请求对象request * @param url * @return */ private static Request getRequestFromUrl(String url){ Request request=new Request.Builder().url(url).build(); return request; }/*** 获取响应对象 * @param url * @return * @throws IOException */ private static Response getResponseFromUrl(String url) throws IOException { Request request=getRequestFromUrl(url); Response response=okhttpclient.newCall(request).execute(); return response; }/*** 获取responseBody对象 * @param url * @return * @throws IOException */ private static ResponseBody getResponseBodyFromUrl(String url) throws IOException { Response response=getResponseFromUrl(url); if(response.isSuccessful()){ return response.body(); } return null; }/*** 通过网络请求获取字符串 * @param url * @return * @throws IOException */ public static String loadStringFromUrl(String url) throws IOException { ResponseBody responseBody=getResponseBodyFromUrl(url); if(responseBody!=null){ return responseBody.string(); } return null; } /** * 通过网络请求获取字符串 * @param url * @return * @throws IOException */ public byte[] loadByteFromUrl(String url) throws IOException { ResponseBody responseBody=getResponseBodyFromUrl(url); if(responseBody!=null){ return responseBody.bytes(); } return null; } /** * 通过网络请求获取输入流 * @param url * @return * @throws IOException */ public InputStream loadStemFromUrl(String url) throws IOException { ResponseBody responseBody=getResponseBodyFromUrl(url); if(responseBody!=null){ return responseBody.byteStream(); } return null; }}
在activty中调用是这样:
@Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); Thread thread=new Thread(runnable); thread.start(); } private Runnable runnable=new Runnable() { @Override public void run() { try { String str= OkhttpUtils.loadStringFromUrl("url"); Log.e("tag=",str+"----"); } catch (IOException e) { e.printStackTrace(); } } };