欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

Java中的OkHttpClient 工具類

 更新時間:2023年06月17日 10:33:04   作者:會改bug的程序員  
這篇文章主要介紹了Java中的OkHttpClient工具類,具有很好的參考價值,希望杜大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教

Java OkHttpClient 工具類

OkHttpClient

1、pom

<dependency>
? ? <groupId>com.squareup.okhttp3</groupId>
? ? <artifactId>okhttp</artifactId>
? ? <version>3.14.0</version>
</dependency>

2.代碼例子

import okhttp3.*;
import okhttp3.Request.Builder;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;
import java.net.HttpURLConnection;
import java.net.URL;
import java.net.URLEncoder;
import java.util.Iterator;
import java.util.Map;
import java.util.concurrent.TimeUnit;
import com.alibaba.fastjson.JSONObject;
public class HttpClient {
OkHttpClient okHttpClient;
public HttpClient() {
okHttpClient = new OkHttpClient.Builder()
.connectTimeout(10, TimeUnit.SECONDS)
.writeTimeout(10, TimeUnit.SECONDS)
.readTimeout(20, TimeUnit.SECONDS)
.build();
}
public void sendJson(String url, String json, Callback callback) {
//MediaType 設置Content-Type 標頭中包含的媒體類型值
RequestBody requestBody = FormBody.create(MediaType.parse("application/json; charset=utf-8"), json);
Request request = new Request.Builder()
.url(url)//請求的url
.post(requestBody)
.build();
//創(chuàng)建/Call
Call call = okHttpClient.newCall(request);
//加入隊列 異步操作
call.enqueue(callback);
}
private String attachHttpGetParams(String url, Map<String, String> params) {
Iterator<String> keys = params.keySet().iterator();
Iterator<String> values = params.values().iterator();
StringBuffer stringBuffer = new StringBuffer();
stringBuffer.append("?");
for (int i = 0; i < params.size(); i++) {
String value = null;
try {
value = URLEncoder.encode(values.next(), "utf-8");
} catch (Exception e) {
e.printStackTrace();
}
stringBuffer.append(keys.next() + "=" + value);
if (i != params.size() - 1) {
stringBuffer.append("&");
}
}
return url + stringBuffer.toString();
}
public String get(String url, Map<String, String> params) throws IOException {
Request request = new Request.Builder().url(attachHttpGetParams(url, params)).build();
return okHttpClient.newCall(request).execute().body().string();
}
public String post(String url, Map<String, String> formValues) throws IOException {
FormBody.Builder builder = new FormBody.Builder();
formValues.forEach((k, v) -> {
builder.add(k, v);
});
Request request = new Request.Builder().url(url).post(builder.build()).build();
Call call = okHttpClient.newCall(request);
return call.execute().body().string();
}
public String postWithHeaderJson(String url, Map<String, String> header, String json) throws IOException {
RequestBody requestBody = FormBody.create(MediaType.parse("application/json; charset=utf-8"), json);
Builder builderHeader = new Request.Builder();
header.forEach((k, v) -> {
builderHeader.addHeader(k, v);
});
Request request = builderHeader.url(url).post(requestBody).build();
Call call = okHttpClient.newCall(request);
return call.execute().body().string();
}
public String postJson(String url, String content) throws IOException {
RequestBody requestBody = FormBody.create(MediaType.parse("application/json; charset=utf-8"), content);
Request request = new Request.Builder().url(url).post(requestBody).build();
Call call = okHttpClient.newCall(request);
return call.execute().body().string();
}
public String getWithHeader(String url, Map<String, String> header) throws IOException {
Builder builderHeader = new Request.Builder();
header.forEach((k, v) -> {
builderHeader.addHeader(k, v);
});
Request request = builderHeader.url(url).build();
return okHttpClient.newCall(request).execute().body().string();
}
public static String sendPost(String url, String param) {
OutputStreamWriter out = null;
BufferedReader in = null;
String result = "";
try {
URL realUrl = new URL(url);
HttpURLConnection conn = null;
conn = (HttpURLConnection) realUrl.openConnection();
// 打開和URL之間的連接
// 發(fā)送POST請求必須設置如下兩行
conn.setDoOutput(true);
conn.setDoInput(true);
conn.setRequestMethod("POST"); // POST方法
// 設置通用的請求屬性
conn.setRequestProperty("accept", "*/*");
conn.setRequestProperty("connection", "Keep-Alive");
conn.setRequestProperty("user-agent",
"Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1;SV1)");
conn.setRequestProperty("Content-Type", "application/x-www-form-urlencoded");
conn.connect();
// 獲取URLConnection對象對應的輸出流
out = new OutputStreamWriter(conn.getOutputStream(), "UTF-8");
// 發(fā)送請求參數
out.write(param);
// flush輸出流的緩沖
out.flush();
// 定義BufferedReader輸入流來讀取URL的響應
in = new BufferedReader(
new InputStreamReader(conn.getInputStream()));
String line;
while ((line = in.readLine()) != null) {
result += line;
}
} catch (Exception e) {
System.out.println("發(fā)送 POST 請求出現異常!" + e);
e.printStackTrace();
}
//使用finally塊來關閉輸出流、輸入流
finally {
try {
if (out != null) {
out.close();
}
if (in != null) {
in.close();
}
} catch (IOException ex) {
ex.printStackTrace();
}
}
return result;
}
}

工具類OkHttpClient解析

1.HttpUtils

public class HttpUtils {
    public static String get(String urlString){
        OkHttpClient okHttpClient = new OkHttpClient.Builder()
                .addInterceptor(new LoggingInterceptor())//日志攔截器
                .connectTimeout(10, TimeUnit.SECONDS)//連接超時
                .readTimeout(10,TimeUnit.SECONDS)//讀取超時
                .writeTimeout(10,TimeUnit.SECONDS)//寫入超時
                .build();
        Request request = new Request.Builder().url(urlString).get().build();
        try {
            Response response = okHttpClient.newCall(request).execute();
            String result = response.body().string();
            Log.i("dt","請求結果:"+result);
            return result;
        } catch (IOException e) {
            e.printStackTrace();
        }
        return "";
    }
    public static String postForm(String url,String[] name,String[] value){
        OkHttpClient okHttpClient = new OkHttpClient.Builder()
                .addInterceptor(new LoggingInterceptor())//日志攔截器
                .connectTimeout(10, TimeUnit.SECONDS)//連接超時
                .readTimeout(10,TimeUnit.SECONDS)//讀取超時
                .writeTimeout(10,TimeUnit.SECONDS)//寫入超時
                .build();
        FormBody.Builder formBuild = new FormBody.Builder();
        for (int i = 0; i < name.length; i++) {
            formBuild.add(name[i],value[i]);
        }
        Request request = new Request.Builder().url(url).post(formBuild.build()).build();
        try {
            Response response = okHttpClient.newCall(request).execute();
            String result = response.body().string();
            Log.i("dt",result);
            return result;
        } catch (IOException e) {
            e.printStackTrace();
        }
        return "";
    }
    public static String postFile(String url,String[] name,String[] value,String fileParamName,File file){
        OkHttpClient okHttpClient = new OkHttpClient.Builder()
                .addInterceptor(new LoggingInterceptor())//日志攔截器
                .connectTimeout(10, TimeUnit.SECONDS)//連接超時
                .readTimeout(10,TimeUnit.SECONDS)//讀取超時
                .writeTimeout(10,TimeUnit.SECONDS)//寫入超時
                .build();
        MultipartBody.Builder requestBody = new MultipartBody.Builder().setType(MultipartBody.FORM);
        if(file != null){
            // MediaType.parse() 里面是上傳的文件類型。
            RequestBody body = RequestBody.create(MediaType.parse("image/*"), file);
            String filename = file.getName();
            // 參數分別為: 文件參數名 ,文件名稱 , RequestBody
            requestBody.addFormDataPart(fileParamName, "jpg", body);
        }
        if (name!=null) {
            for (int i = 0; i < name.length; i++) {
                requestBody.addFormDataPart(name[i], value[i]);
            }
        }
        Request request = new Request.Builder().url(url).post(requestBody.build()).build();
        try {
            Response response = okHttpClient.newCall(request).execute();
            if (response.code()==200) {
                return response.body().string();
            }
        } catch (IOException e) {
            e.printStackTrace();
        }
        return "";
    }
    public static String postJson(String url,String jsonString){
        OkHttpClient okHttpClient = new OkHttpClient();
        RequestBody requestBody = RequestBody.create(MediaType.parse("application/json"),jsonString);
        Request request = new Request.Builder().url(url).post(requestBody).build();
        try {
            Response response = okHttpClient.newCall(request).execute();
            return response.body().string();
        } catch (IOException e) {
            e.printStackTrace();
        }
        return "";
    }
}

總結

以上為個人經驗,希望能給大家一個參考,也希望大家多多支持腳本之家。

相關文章

  • Java中的Map集合根據key值排序的實現

    Java中的Map集合根據key值排序的實現

    本文主要介紹了Java中的Map集合如何根據key值排序,包含使用TreeMap和使用lambda表達式和Stream流兩種方法,具有一定的參考價值,感興趣的可以了解一下
    2024-03-03
  • 詳解Java Streams 中的異常處理

    詳解Java Streams 中的異常處理

    這篇文章主要介紹了Java Streams 中的異常處理,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2019-03-03
  • JAVA中JNI的簡單使用分享

    JAVA中JNI的簡單使用分享

    這篇文章介紹了JAVA中JNI的簡單使用,有需要的朋友可以參考一下
    2013-10-10
  • 使用idea遠程調試jar包的配置過程

    使用idea遠程調試jar包的配置過程

    這篇文章主要介紹了使用idea遠程調試jar包的配置過程,本文給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2021-09-09
  • Spring Boot+Drools規(guī)則引擎整合詳解

    Spring Boot+Drools規(guī)則引擎整合詳解

    本篇文章主要介紹了Spring Boot+Drools規(guī)則引擎整合,小編覺得挺不錯的,現在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2017-09-09
  • Java使用遞歸復制文件夾及文件夾

    Java使用遞歸復制文件夾及文件夾

    這篇文章主要介紹了Java使用遞歸復制文件夾及文件夾,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下
    2020-05-05
  • 如何剔除eureka無效和down狀態(tài)的問題

    如何剔除eureka無效和down狀態(tài)的問題

    這篇文章主要介紹了如何剔除eureka無效和down狀態(tài)的問題,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2023-07-07
  • Mybatis + js 實現下拉列表二級聯(lián)動效果

    Mybatis + js 實現下拉列表二級聯(lián)動效果

    這篇文章給大家介紹基于Mybatis + js 實現下拉列表二級聯(lián)動效果,實現代碼分為前端界面實現和后端處理方法,代碼簡單易懂,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友參考下吧
    2021-06-06
  • ant打包jar文件腳本分享

    ant打包jar文件腳本分享

    本文介紹的ant腳本是用來打包jar文件,做完JAVA應用一定會用到這個,需要的朋友可以參考下
    2014-03-03
  • SpringMVC整合mybatis實例代碼

    SpringMVC整合mybatis實例代碼

    MyBatis 的前身就是 iBatis 。是一個數據持久層(ORM)框架。下面通過本文給大家介紹SpringMVC整合mybatis實例代碼,感興趣的朋友一起學習吧
    2016-05-05

最新評論