Android Okhttp 使用

1.基本使用

1.1 字符串读取

//这个程序下载一个URL并将其内容返回为字符串
OkHttpClient client = new OkHttpClient();

String getStringFromUrl(String url) throws IOException {
    
    
  Request request = new Request.Builder()
      .url(url)
      .build();

  try (Response response = client.newCall(request).execute()) {
    
    
    return response.body().string();
  }
}
// 该程序将数据发送到服务,json数据形式。
public static final MediaType JSON
    = MediaType.get("application/json; charset=utf-8");

OkHttpClient client = new OkHttpClient();

String postToServe(String url, String json) throws IOException {
    
    
  RequestBody body = RequestBody.create(json, JSON);
  Request request = new Request.Builder()
      .url(url)
      .post(body)
      .build();
  try (Response response = client.newCall(request).execute()) {
    
    
    return response.body().string();
  }
}

1.2 文件下载

例如:

示例

参考下面注解得到以上使用方法:

在这里插入图片描述

以下是使用方式:

Response response = client.newCall(request).execute();
InputStream in = response.body().byteStream();
byte[] b = new byte[1024];
int len;
while ((len = in.read(b)) != -1) {
    
    
	// 写入文件(使用RandomAccessFile)
    file.write(b, 0, len);
}
response.body().close();

1.3 文件上传

摘抄自:https://www.jianshu.com/p/d176b35510c9

// 上传文件(没测试)
class ClientUploadUtils {
    
    

    static ResponseBody upload(String url, String filePath, String fileName) throws Exception {
    
    
        OkHttpClient client = new OkHttpClient()
        RequestBody requestBody = new MultipartBody.Builder()
                .setType(MultipartBody.FORM)
                .addFormDataPart("file", fileName,
                        RequestBody.create(MediaType.parse("multipart/form-data"), new File(filePath)))
                .build()

        Request request = new Request.Builder()
                .header("Authorization", "Client-ID " + UUID.randomUUID())
                .url(url)
                .post(requestBody)
                .build()

        Response response = client.newCall(request).execute();
        if (!response.isSuccessful()) throw new IOException("Unexpected code " + response)

        return response.body()
    }


    static void main(String[] args) throws IOException {
    
    
        try {
    
    
            String fileName = "com.jdsoft.biz.test.zip"
            String filePath = "D:\\ExtJsTools\\Sencha\\Cmd\\repo\\pkgs\\test.zip"
            String url = "http://localhost:9990/upload_app_package"
            System.out.println(upload(url, filePath, fileName).string())
        } catch (Exception e) {
    
    
            e.printStackTrace()
        }
    }

}

2. 参考

https://github.com/square/okhttp
https://www.jianshu.com/p/d176b35510c9

猜你喜欢

转载自blog.csdn.net/weixin_37627774/article/details/109306731