免费视频淫片aa毛片_日韩高清在线亚洲专区vr_日韩大片免费观看视频播放_亚洲欧美国产精品完整版

打開APP
userphoto
未登錄

開通VIP,暢享免費電子書等14項超值服

開通VIP
基于HttpURLConnection的android http請求封裝

基于HttpURLConnection的android http請求封裝

使用方法

new Thread(new Runnable(){
    @Override
    public void run() {
      //axiosGH(url,callback)//簡寫方式,默認(rèn)為get請求
      //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) {
              //請求成功返回參數(shù)處理
                System.out.println(res);
            }
            @Override
            public void onFailed(String err) {
              //請求失敗返回參數(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請求——————GuHun
public class AxiosGH {
    private String requestMethod;
    private boolean useCaches;
    private String serverUrl;
    private int connectTimeout;
    private String encode;
    // 初始化實例
    public AxiosGH(){
        init();
    }
    // 默認(rèn)為get請求(地址,回調(diào)函數(shù))
    public AxiosGH(String url,Callback callback){
        init();
        serverUrl = url;
        submitPostData(null,callback);
    }
    // get請求(地址,參數(shù),回調(diào)函數(shù))
    public void get(String url,Callback callback){
        serverUrl = url;
        submitPostData(null,callback);
    }
    // get請求(地址,參數(shù),回調(diào)函數(shù))
    public void get(String url,Map<String,String> params,Callback callback){
        serverUrl = url;
        submitPostData(params,callback);
    }
    // post請求(地址,回調(diào)函數(shù))
    public void post(String url,Callback callback){
        requestMethod = "POST";
        serverUrl = url;
        submitPostData(null,callback);
    }
    // post請求(地址,參數(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);//超時
            if(requestMethod.equals("POST")){
                connection.setDoInput(true);//向服務(wù)器輸入
                connection.setDoOutput(true);//向服務(wù)器輸出
                connection.setUseCaches(useCaches);//緩存
                //設(shè)置請求體的類型是文本類型
                connection.setRequestProperty("Content-Type", "application/x-www-form-urlencoded");
                //設(shè)置請求體的長度
                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();        //存儲封裝好的請求體信息
        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);    //刪除最后的一個"&"
        } catch (Exception e) {
            e.printStackTrace();
        }
        return stringBuffer;
    }
    // 博客園-依舊淡然
    public static String dealResponseResult(InputStream inputStream) {
        String resultData = null;      //存儲處理結(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);
    }

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

作者:咕魂

時間:2021年3月9日09:47:14

get請求我沒測試,之后用到有問題會更新

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

本站僅提供存儲服務(wù),所有內(nèi)容均由用戶發(fā)布,如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請點擊舉報。
打開APP,閱讀全文并永久保存 查看更多類似文章
猜你喜歡
類似文章
Android入門:封裝一個HTTP請求的輔助類
Java發(fā)送HTTP的POST請求
Android 各大網(wǎng)絡(luò)請求庫的比較及實戰(zhàn)
Android異步下載網(wǎng)絡(luò)圖片(其二)
Android入門之Http請求方式Get與Post
是時候用NoHttp來替換Volley了
更多類似文章 >>
生活服務(wù)
分享 收藏 導(dǎo)長圖 關(guān)注 下載文章
綁定賬號成功
后續(xù)可登錄賬號暢享VIP特權(quán)!
如果VIP功能使用有故障,
可點擊這里聯(lián)系客服!

聯(lián)系客服