1. 程式人生 > >Android踩坑日記:Okhttp設定User-Agent你可能沒遇到的坑

Android踩坑日記:Okhttp設定User-Agent你可能沒遇到的坑

Okhttp設定User-Agent你可能沒遇到的坑

  • Http Header之User-Agent
       User-Agent中文名為使用者代理,是Http協議中的一部分,屬於頭域的組成部分,User Agent頁簡稱UA。她是一個特殊字串頭,是一種想訪問網站提供你說使用的瀏覽器型別和版本,作業系統和版本,瀏覽器核心等資訊的標識,使用者所訪問的網站可以顯示不同的排版,而為使用者提供更好的體驗或者進行資訊統計

  • 獲取OkHttp正確的User-Agent

   Okhttp走的並不是原生的http請求,因此他在header裡面並沒有真正的User-Agent,而是”okhttp/版本號”這樣的字串,因此後臺需要統計資訊,要求傳入正確的User-Agent,那麼我們如何User-Agent並設定給Okhttp?

    /**
     * 返回正確的UserAgent
     * @return
     */
    private  static String getUserAgent(){
        String userAgent = "";
        StringBuffer sb = new StringBuffer();
        userAgent = System.getProperty("http.agent");//Dalvik/2.1.0 (Linux; U; Android 6.0.1; vivo X9L Build/MMB29M)

        for (int
i = 0, length = userAgent.length(); i < length; i++) { char c = userAgent.charAt(i); if (c <= '\u001f' || c >= '\u007f') { sb.append(String.format("\\u%04x", (int) c)); } else { sb.append(c); } } LogUtils.v("User-Agent"
,"User-Agent: "+ sb.toString()); return sb.toString(); }
  • 給Okhttp設定User-Agent:
new Request.Builder().url(url).headers(headers2).put(body).removeHeader("User-Agent").addHeader("User-Agent",getUserAgent()).build();

相關推薦

Android日記Okhttp設定User-Agent可能遇到的

Okhttp設定User-Agent你可能沒遇到的坑 Http Header之User-Agent    User-Agent中文名為使用者代理,是Http協議中的一部分,屬於頭域的組成部分,Us

Ubuntu中hadoop日記localhost:50070無法訪問

前人有很多經驗,比如防火牆沒有關閉,可以自行百度看看,不在此貼連結了 或者關閉VPN之流 https://blog.csdn.net/pearyangyang/article/details/78065940 但是我用命令 ufw disable 發現還是無法訪問,最後參考

Flutter日記接入現有iOS項目

ati pen prope eve 分享 reg cgrect ole host 之前搞的Flutter版工具鏈已經弄完了,感興趣的朋友可以圍觀下,Android版本dio庫(v2.0.14)發送網絡請求老是報錯,去官方提了issue還沒回,於是今天搞一下把Flutter模

動態ip代理反網路爬蟲之設定User-Agent的常規方法

動態ip代理:反網路爬蟲之設定User-Agent的常規方法 爬蟲過程中的反爬措施非常重要,其中設定隨機 User-Agent 是一項重要的反爬措施。常規情況,比較方便的方法是利用 fake_useragent包,這個包內建大量的 UA 可以隨機替換,這比自己去搜集羅列要方便很多,下面來看一下如何操作。

android網路操作I OkHttp, Volley以及Gson

寫這篇文章的動機 在安卓專案中有一個問題可能無法避免:網路。不管你是載入圖片,請求API資料還是從因特網上獲得一個位元組,你都是在使用網路。 鑑於網路在安卓中的重要性與基礎性,當今安卓開發者面臨的問題之一就是使用何種解決方案。有許多優秀的庫,你可以用各種方式把一個用在另一

VUEJS入日記.2 -DatePicker設定預設日期

iview中DatePicker 的value屬性和v-modal不能同時使用。 <FormItem prop="s_date" label="出生日期:"> <DatePicker type="date" format="yyy

httpurlconnection設定user-agent引數

URL myUrl = new URL(searchURL); URLConnection myConn = (HttpURLConnection)myUrl.openConnection(); myConn.setRequestProperty("User-agent",

Nginx反爬蟲攻略禁止某些User Agent抓取網站

我們都知道網路上的爬蟲非常多,有對網站收錄有益的,比如百度蜘蛛(Baiduspider),也有不但不遵守robots規則對伺服器造成壓力,還不能為網站帶來流量的無用爬蟲,比如宜搜蜘蛛(YisouSpider)(最新補充

java給爬蟲設定User-Agent(繞過最表面的反爬蟲機制)

今天在爬my電影評分時發現訪問被控制,但瀏覽器依舊能訪問,查閱後得知因為java程式與瀏覽器訪問不同,一些採取了簡單採反爬蟲機制的網站可以拒絕這些小爬蟲的訪問。my電影也用了不少反爬蟲策略,比如說票房、評分人數都轉換了編碼讓你不好直接爬取,但我目前不需要那一部分。在給java

程式設計師養生心得除了保溫杯+枸杞,可能還需要它!

程式設計師們一天要面對電腦螢幕10小時以上,一行行密密麻麻的程式碼在眼前轉來轉去,工作時精神高度

日記--poi操作word設定表格列寬

今天遇到一個問題,使用poi操作word,生成的表格逐列設定列寬無效。一直找不出原因,網上搜索也沒人提醒說是什麼原因,最後發現是未設定列自動伸縮(tblWidth.setType(STTblWidth.

總結通過selector的android:state_checkable和android:state_checked設定RadioButton的背景色切換遇到的問題

 目的(需求):     想通過selector的android:state_checkable和android:state_checked不可選按鈕為灰,可選沒選中為白,    可選已選中為紅的效果。 layout的xml程式

OkHttp為何 response.body().string() 只能呼叫一次?

想必大家都用過或接觸過 OkHttp,我最近在使用 Okhttp 時,就踩到一個坑,在這兒分享出來,以後大家遇到類似問題時就可以繞過去。 只是解決問題是不夠的,本文將 側重從原始碼角度分析下問題的根本,乾貨滿滿。 1.發現問題 在開發時,我通過構造 O

Android小數點變逗號,DecimalFormat格式化資料跟語言環境有關

在專案裡面需要將byte轉換成KB MB GB,並且保留兩位小數,用到了DecimalFormat來格式化資料,如下: DecimalFormat df = new DecimalFormat("0.00"); return df.format(value

AI相關 TensorFlow -卷積神經網絡 日記之一

一個 模糊 結果 隊列 二維 圖片路徑 降維 支持 日記 上次寫完粗淺的BP算法 介紹 本來應該繼續把 卷積神經網絡算法寫一下的 但是最近一直在踩 TensorFlow的坑。所以就先跳過算法介紹直接來應用場景,原諒我吧。 TensorFlow 介紹 TF是google

Java筆記ObjectIOStream與IOStream的各種裝飾器(先挖個,以後再來詳細填)

ted objects lose val read thread 環境 valid 序列化對象 Java的序列化和ObjectStream真是一個大坑。。 先不說多線程環境下的問題,在單線程裏,一個Socket只能保持一個ObjectOutputStream,原因好像是

[轉]Spark 數據庫(Hbase+Mysql)

cep 直接 策略 https rds 但是 更新 base ID https://cloud.tencent.com/developer/article/1004820 Spark 踩坑記:數據庫(Hbase+Mysql) 前言 在使用Spark Streaming的過程

Office Web addin 替換後臺網站為MVC框架時遇到的問題

調試運行 pro add 9.png info img 但是 office 新建 Office Web Addin 模板程序的後臺本質上是一個網站,你在調試的時候可以發現它的進程是一個32位的IE進程 所以可以把它替換成Asp.net的網站。 替換方法: 1.點擊WordR

SpringCloud日記 (1) - 使用ip註冊到eureka

pre true key值 pad 取ip fault ins default instance 服務提供者使用主機名註冊到eureka改為使用ip註冊到eureka eureka: client: service-url: defaultZone:

日記

開設此專欄的原因 因為日常踩坑,踩坑之後總是要除錯很久,所以開設此專欄,便於記住踩過的坑。 優先順序問題 2018.11.2 problem: P2607 [ZJOI2008]騎士 details: 注意,^的優先順序是小於\(==\)的。 所以要判斷\(x\)^\(y\)是不是等於\(z\)