小男孩‘自慰网亚洲一区二区,亚洲一级在线播放毛片,亚洲中文字幕av每天更新,黄aⅴ永久免费无码,91成人午夜在线精品,色网站免费在线观看,亚洲欧洲wwwww在线观看

分享

基于HttpURLConnection的android http請(qǐng)求封裝

 Coder編程 2022-12-21 發(fā)布于北京

基于HttpURLConnection的android http請(qǐng)求封裝

使用方法

new Thread(new Runnable(){
    @Override
    public void run() {
      //axiosGH(url,callback)//簡寫方式,默認(rèn)為get請(qǐng)求
      //axiosGH.get(url,callback)
      //axiosGH.get(url,params,callback)
      //axiosGH.post(url,callback)
      //axiosGH.post(url,params,callback)
        axiosGH.post(serverUrl + "/user/login", params, new AxiosGH.Callback() {
            @Override
            public void onSuccess(String res) {
              //請(qǐng)求成功返回參數(shù)處理
                System.out.println(res);
            }
            @Override
            public void onFailed(String err) {
              //請(qǐng)求失敗返回參數(shù)處理
                System.out.println(err);
            }
        });
    }
}).start();

代碼片段

package com.guhun.server;

import java.io.ByteArrayOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.net.HttpURLConnection;
import java.net.URL;
import java.net.URLEncoder;
import java.util.Map;

// 仿造axios書寫的http請(qǐng)求——————GuHun
public class AxiosGH {
    private String requestMethod;
    private boolean useCaches;
    private String serverUrl;
    private int connectTimeout;
    private String encode;
    // 初始化實(shí)例
    public AxiosGH(){
        init();
    }
    // 默認(rèn)為get請(qǐng)求(地址,回調(diào)函數(shù))
    public AxiosGH(String url,Callback callback){
        init();
        serverUrl = url;
        submitPostData(null,callback);
    }
    // get請(qǐng)求(地址,參數(shù),回調(diào)函數(shù))
    public void get(String url,Callback callback){
        serverUrl = url;
        submitPostData(null,callback);
    }
    // get請(qǐng)求(地址,參數(shù),回調(diào)函數(shù))
    public void get(String url,Map<String,String> params,Callback callback){
        serverUrl = url;
        submitPostData(params,callback);
    }
    // post請(qǐng)求(地址,回調(diào)函數(shù))
    public void post(String url,Callback callback){
        requestMethod = "POST";
        serverUrl = url;
        submitPostData(null,callback);
    }
    // post請(qǐng)求(地址,參數(shù),回調(diào)函數(shù))
    public void post(String url,Map<String,String> params,Callback callback){
        requestMethod = "POST";
        serverUrl = url;
        submitPostData(params,callback);
    }
    // 初始化參數(shù)
    private void init(){
        requestMethod = "GET";
        useCaches = false;
        connectTimeout = 3000;
        encode="utf-8";
    }

    // 博客園-依舊淡然
    //HttpUtils.submitPostData(params, "utf-8")
    private void submitPostData(Map<String, String> params,Callback callback){
        String data = null;
        if (params!=null) {
             data = getRequestData(params, encode).toString();
        }
        try {
            if(requestMethod.equals("GET") && data != null){
                serverUrl += '?'+data;
            }
            URL url = new URL(serverUrl);
            HttpURLConnection connection = (HttpURLConnection) url.openConnection();
            connection.setRequestMethod(requestMethod);//方式
            connection.setConnectTimeout(connectTimeout);//超時(shí)
            if(requestMethod.equals("POST")){
                connection.setDoInput(true);//向服務(wù)器輸入
                connection.setDoOutput(true);//向服務(wù)器輸出
                connection.setUseCaches(useCaches);//緩存
                //設(shè)置請(qǐng)求體的類型是文本類型
                connection.setRequestProperty("Content-Type", "application/x-www-form-urlencoded");
                //設(shè)置請(qǐng)求體的長度
                connection.setRequestProperty("Content-Length", String.valueOf(data.getBytes().length));
                //獲得輸出流,向服務(wù)器寫入數(shù)據(jù)
                OutputStream outputStream = connection.getOutputStream();
                outputStream.write(data.getBytes());
            }
            int response = connection.getResponseCode();            //獲得服務(wù)器的響應(yīng)碼
            if(response == HttpURLConnection.HTTP_OK) {
                InputStream inptStream = connection.getInputStream();
                callback.onSuccess(dealResponseResult(inptStream));                     //處理服務(wù)器的響應(yīng)結(jié)果
            }else {
                callback.onFailed("Error: response is" + response);
            }
        } catch (Exception e) {
            e.printStackTrace();
            callback.onFailed(e.toString());
        }
    }
    // 博客園-依舊淡然
    public static StringBuffer getRequestData(Map<String, String> params, String encode) {
        StringBuffer stringBuffer = new StringBuffer();        //存儲(chǔ)封裝好的請(qǐng)求體信息
        try {
            for(Map.Entry<String, String> entry : params.entrySet()) {
                stringBuffer.append(entry.getKey())
                        .append("=")
                        .append(URLEncoder.encode(entry.getValue(), encode))
                        .append("&");
            }
            stringBuffer.deleteCharAt(stringBuffer.length() - 1);    //刪除最后的一個(gè)"&"
        } catch (Exception e) {
            e.printStackTrace();
        }
        return stringBuffer;
    }
    // 博客園-依舊淡然
    public static String dealResponseResult(InputStream inputStream) {
        String resultData = null;      //存儲(chǔ)處理結(jié)果
        ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream();
        byte[] data = new byte[1024];
        int len = 0;
        try {
            while((len = inputStream.read(data)) != -1) {
                byteArrayOutputStream.write(data, 0, len);
            }
        } catch (IOException e) {
            e.printStackTrace();
        }
        resultData = new String(byteArrayOutputStream.toByteArray());
        return resultData;
    }
    // 回調(diào)函數(shù)
    public interface Callback{
        void onSuccess(String res);
        void onFailed(String err);
    }

    // 請(qǐng)求方式
    public void setRequestMethod(String requestMethod) {
        this.requestMethod = requestMethod;
    }
    // 使用緩存
    public void setUseCaches(boolean useCaches) {
        this.useCaches = useCaches;
    }
    // 請(qǐng)求地址
    public void setServerUrl(String serverUrl) {
        this.serverUrl = serverUrl;
    }
    // 請(qǐng)求參數(shù)
    public void setConnectTimeout(int connectTimeout) {
        this.connectTimeout = connectTimeout;
    }
    // 編碼方式
    public void setEncode(String encode) {
        this.encode = encode;
    }
}

作者:咕魂

時(shí)間:2021年3月9日09:47:14

get請(qǐng)求我沒測(cè)試,之后用到有問題會(huì)更新

參考代碼:Android學(xué)習(xí)筆記46:使用Post方式提交數(shù)據(jù)

    本站是提供個(gè)人知識(shí)管理的網(wǎng)絡(luò)存儲(chǔ)空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點(diǎn)。請(qǐng)注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購買等信息,謹(jǐn)防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請(qǐng)點(diǎn)擊一鍵舉報(bào)。
    轉(zhuǎn)藏 分享 獻(xiàn)花(0

    0條評(píng)論

    發(fā)表

    請(qǐng)遵守用戶 評(píng)論公約

    類似文章 更多