国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

Android OkHttp/Retrofit框架使用Interceptor 抓包/mock數(shù)據(jù)

這篇具有很好參考價值的文章主要介紹了Android OkHttp/Retrofit框架使用Interceptor 抓包/mock數(shù)據(jù)。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點擊"舉報違法"按鈕提交疑問。

在Android業(yè)務(wù)開發(fā)中,抓包/mock數(shù)據(jù)一般有兩種方案(該篇主要介紹第種方案):

一、通過Charles(或fiddle)抓包/mock數(shù)據(jù):

二、添加Intercepter來抓取/mock數(shù)據(jù):

前提:

網(wǎng)絡(luò)庫使用的是okhttp或Retrofit。

這里就用到了okhttp框架的原理定義一個MockDataInterceptor【Mock數(shù)據(jù)攔截器】,并在創(chuàng)建Builder實例的時候直接使用addIntercepter應(yīng)用攔截器】添加MockDataInterceptor實例即可

1、addInterceptor(new MockDataInterceptor()):

OkHttpClient.Builder builder = new OkHttpClient.Builder();
builder.connectTimeout(15, TimeUnit.SECONDS)
       .readTimeout(15, TimeUnit.SECONDS)
       .writeTimeout(15, TimeUnit.SECONDS)
       //在此處添加MockDataInterceptor攔截即可
       .addInterceptor(new MockDataInterceptor())
       .retryOnConnectionFailure(false);

?2、MockDataInterceptor定義如下:

/**
 * Mock數(shù)據(jù)攔截器
 */
public class MockDataInterceptor implements Interceptor {

    private static final String TAG = "MockDataInterceptor";
    //是否開啟mock數(shù)據(jù)
    private static final boolean mockIsOpen = true;
    private String path;

    private static Map<String, String> pathMap;

    @Override
    public Response intercept(Chain chain) throws IOException {
        Request request = chain.request();
        Response response = chain.proceed(request);
        Headers headers = response.request().headers();
        if (shouldInterceptorRequest(request) && mockIsOpen) {
            //查看Headers請求參數(shù)
            Log.d(TAG, "headers:" + headers);

            //查看原始responseBody數(shù)據(jù)
            Response.Builder builder = response.newBuilder();
            if (response.body() != null) {
                String originalBody = response.body().string();
                Log.d(TAG, "原始的 responseBody:" + originalBody);
            }

            if (!TextUtils.isEmpty(getMockData())) {
                //為responseBody賦值[mock數(shù)據(jù)]
                ResponseBody responseBody = ResponseBody.create(MediaType.parse("application/json; charset=utf-8"), getMockData());
                builder.body(responseBody);
                Log.d(TAG, "mock數(shù)據(jù)后 responseBody:" + getMockData());
            }
            return builder.build();
        } else {
            return response;
        }
    }

    //獲取對應(yīng)的mock數(shù)據(jù)
    private String getMockData() {
        for (String key : pathMap.keySet()) {
            if (path.contains(key)) {
                return pathMap.get(key);
            }
        }
        return "";
    }

    //在此處添加被攔截的接口判斷
    private boolean shouldInterceptorRequest(Request request) {
        path = request.url().url().getPath();

        for (String key : pathMap.keySet()) {
            if (path.contains(key)) {
                Log.d(TAG, "path:" + path);
                return true;
            }
        }
        return false;
    }


    public static final String MOCK_DATA_APP_***_*HECK = "{\n" +
            "    \"resMsg\":{\n" +
            "        \"code\":0,\n" +
            "        \"message\":\"\\u6210\\u529f\"\n" +
            "    },\n" +
            "    \"datas\":{\n" +
            "        \"type\":1,\n" +
            "        \"title\":\"\標題",\n" +
            "        \"content\":\"哈哈哈",\n" +
            "        \"url\":\"\"\n" +
            "    }\n" +
            "}";

    //將對應(yīng)的接口path及該接口mock數(shù)據(jù)添加到pathMap中
    static {
        pathMap = new HashMap<>();
        pathMap.put("app****heck", MOCK_DATA_APP_***_*HECK);
    }
}

使用前需注意:

  • mock開關(guān)是打開的mockIsOpen = true;
  • pathMap中已添加所需的接口pathmock數(shù)據(jù)。

這樣就可以愉快的抓包及mock數(shù)據(jù)了。文章來源地址http://www.zghlxwxcb.cn/news/detail-727303.html

到了這里,關(guān)于Android OkHttp/Retrofit框架使用Interceptor 抓包/mock數(shù)據(jù)的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務(wù),不擁有所有權(quán),不承擔相關(guān)法律責任。如若轉(zhuǎn)載,請注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實不符,請點擊違法舉報進行投訴反饋,一經(jīng)查實,立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費用

相關(guān)文章

  • Springboot-Retrofit HTTP工具框架快速使用

    Springboot-Retrofit HTTP工具框架快速使用

    在SpringBoot項目直接使用okhttp、httpClient或者RestTemplate發(fā)起HTTP請求,既繁瑣又不方便統(tǒng)一管理。 因此,在這里推薦一個適用于SpringBoot項目的輕量級HTTP客戶端框架retrofit-spring-boot-starter,使用非常簡單方便,同時又提供諸多功能增強 Retrofit是適用于Android和Java且類型安全的HTTP客戶

    2024年02月13日
    瀏覽(17)
  • 【Java萬花筒】解碼Java網(wǎng)絡(luò)通訊謎團:對比Apache HttpClient、OkHttp、Feign、RestTemplate、Retrofit

    在當今互聯(lián)網(wǎng)時代,Java開發(fā)者常常需要處理與各種RESTful服務(wù)的通信。本文旨在深入比較Java中幾個主流的網(wǎng)絡(luò)請求庫,包括Apache HttpClient、OkHttp、Feign、RestTemplate、Retrofit。通過全面的介紹和示例代碼,讀者將能夠了解它們的特點、優(yōu)勢以及如何在實際項目中使用。 歡迎訂閱專

    2024年01月25日
    瀏覽(26)
  • Android 使用Retrofit+協(xié)程實現(xiàn)超簡單大文件下載并回顯進度條

    Android 使用Retrofit+協(xié)程實現(xiàn)超簡單大文件下載并回顯進度條

    安卓自帶的進度條彈窗過時了,這里簡單創(chuàng)建一個進度條彈窗 在 drawable 文件夾創(chuàng)建 progress_dialog_bg_style.xml 一個圓角白色背景樣式 創(chuàng)建 alert_dialog_download_progress.xml 布局 創(chuàng)建彈窗工具類,使用剛才創(chuàng)建好的布局 簡單封裝一個下載工具類 先定義一個下載參數(shù)實體 DownloadDTO 編寫下

    2024年02月12日
    瀏覽(20)
  • Android 使用okhttp監(jiān)控網(wǎng)絡(luò)數(shù)據(jù)

    Android 使用okhttp監(jiān)控網(wǎng)絡(luò)數(shù)據(jù)

    這里使用Okhttp寫了一個demo來監(jiān)聽網(wǎng)絡(luò)請求過程中的一系列數(shù)據(jù),包括當前網(wǎng)絡(luò)類型、請求體、響應(yīng)體大小,url,請求方式,當然還有本次核心獲取域名解析時長,建立連接時長,保持連接時長,請求總時長這些數(shù)據(jù)。 一次網(wǎng)絡(luò)請求經(jīng)歷了哪些過程 通過域名訪問的方式來請求

    2024年02月11日
    瀏覽(30)
  • Python測試框架 Pytest —— mock使用(pytest-mock)

    Python測試框架 Pytest —— mock使用(pytest-mock)

    安裝:pip install pytest-mock 這里的mock和unittest的mock基本上都是一樣的,唯一的區(qū)別在于pytest.mock需要導入mock對象的詳細路徑。 先將需要模擬的天氣接口,以及需要模擬的場景的代碼寫好,然后在進行遵循pytest的用例規(guī)范進行書寫關(guān)于mock的測試用例 通過上述代碼,提供pytest中

    2024年02月09日
    瀏覽(23)
  • Android OKhttp使用(下載和上傳文件)

    首先在build.gradle中引入okhttp 下面是demo(用okthttp下載網(wǎng)絡(luò)上的資源) 用okthttp將資源上傳至網(wǎng)絡(luò)

    2024年02月11日
    瀏覽(37)
  • 使用Flask框架mock server實戰(zhàn)(三)

    使用Flask框架mock server實戰(zhàn)(三)

    test_case.py 修改test_01如下

    2024年02月13日
    瀏覽(19)
  • Android之網(wǎng)絡(luò)請求2————OkHttp的基本使用

    Android之網(wǎng)絡(luò)請求2————OkHttp的基本使用

    1.概述 okhttp是一個第三方庫,用于Android中網(wǎng)絡(luò)請求 這是一個開源項目,是安卓端最火熱的輕量級框架,由移動支付Square公司貢獻(該公司還貢獻了Picasso和LeakCanary) 。用于替代HttpUrlConnection和Apache HttpClient(android API23 里已移除HttpClient)。 2.OkHttp于http的請求 我們先構(gòu)造一個一個http請

    2024年02月01日
    瀏覽(24)
  • 框架解讀 | Retrofit設(shè)計剖析

    作者:Calculus_小王 Retrofit是一個類型安全的HTTP客戶端,可以通過注解將HTTP API轉(zhuǎn)換為Java接口,并使用動態(tài)代理,CallAdapter和Converter來發(fā)起請求和解析響應(yīng)。 本文 著重于 Retrofit的架構(gòu)設(shè)計,對于其 注解解析能力 上 不作詳細闡述 本文基于 retrofit:2.6.2 本示例僅以最基礎(chǔ)的retro

    2024年02月13日
    瀏覽(17)
  • android開發(fā)使用OkHttp自帶的WebSocket實現(xiàn)IM功能

    android開發(fā)使用OkHttp自帶的WebSocket實現(xiàn)IM功能

    目錄 一、背景 二、在項目中添加依賴包 三、框架調(diào)用 1、配置OkHttpClient ?2、調(diào)用Url,構(gòu)建WebSocket請求 3、建立連接 4、使用WebSocket對象發(fā)送消息 ? ? android app開發(fā)經(jīng)常會有IM需求,很多新手不曉得如何入手,難點在于通訊不中斷。其實android發(fā)展到今天,很多技術(shù)都很完善,有

    2024年02月08日
    瀏覽(25)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包