关于自己对okhttp的理解-----get请求同步用法

来源:互联网 发布:linux 打印机驱动 编辑:程序博客网 时间:2024/05/20 06:40

通过在网上查看资料,我现在把自己理解的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中调用是这样:


@Overrideprotected 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();        }    }};

0 0
原创粉丝点击