一次奔潰的經(jīng)歷
事情是這樣的:第三方提供了一個(gè)接口需要對(duì)接,我就對(duì)接了,測(cè)試環(huán)節(jié)的時(shí)候怎么都調(diào)不通,各種排查,各方人員都動(dòng)員了起來(lái),就是沒(méi)有找到問(wèn)題,下面把問(wèn)題報(bào)錯(cuò)的原因呈上:

就是報(bào)錯(cuò) 508 ,返回一個(gè)空的 Response body.
剛開(kāi)始出現(xiàn)這個(gè)問(wèn)題,我懷疑是不是我的代碼哪里沒(méi)有處理好呢? 檢查了一遍沒(méi)有發(fā)現(xiàn)什么問(wèn)題。
返回 508 什么意思?
508 碼表示服務(wù)器中斷一個(gè)操作,因?yàn)樗谔幚砭哂小癉epth: infinity”的請(qǐng)求時(shí)遇到了一個(gè)無(wú)限循環(huán)。508 碼表示整個(gè)操作失敗。
請(qǐng)求接口走的代理服務(wù)器,我方配置了一個(gè)代理服務(wù)器去訪(fǎng)問(wèn)接口,于是我就懷疑是不是我方 nginx 哪里做了限制,導(dǎo)致出現(xiàn)的問(wèn)題呢?
我去找了我方運(yùn)維詢(xún)問(wèn)相關(guān)問(wèn)題,運(yùn)維通過(guò) curl 命令直接訪(fǎng)問(wèn)接口也是返回 508 ,于是我就斷定是第三方的配置出了問(wèn)題。
就在這時(shí)候我的同事用 postman 和瀏覽器測(cè)試說(shuō)接口沒(méi)問(wèn)題,有返回值,驚呆了我,于是我就用 postman 和瀏覽器都測(cè)試了一遍,果然接口沒(méi)有問(wèn)題。
臥槽,第三方提供的接口是沒(méi)有問(wèn)題的,那就是我的問(wèn)題嘍。。。 我靜下心來(lái),重新捋了一遍代碼,還是沒(méi)發(fā)現(xiàn)有啥問(wèn)題。
各方交戰(zhàn)
我把接口的詳細(xì)請(qǐng)求參數(shù)發(fā)給了第三方,第三方測(cè)試沒(méi)有問(wèn)題,第三方說(shuō)讓我方在檢查一下,我和同事包括運(yùn)維的同事都頭大了,各種排查。
第三方說(shuō)是我方的問(wèn)題,我方認(rèn)為是第三方的問(wèn)題,問(wèn)題陷入了僵局,沒(méi)辦法只能借助萬(wàn)能的互聯(lián)網(wǎng)看看能不能解決相關(guān)問(wèn)題。
我搜到了這樣一個(gè)相關(guān)的問(wèn)題:
RestTemplate請(qǐng)求第三方接口,返回508 ,postman請(qǐng)求沒(méi)問(wèn)題,瀏覽器訪(fǎng)問(wèn)也沒(méi)問(wèn)題,什么情況?

我再次看了一下第三方給的接口文檔,再次捋了一遍代碼,毫無(wú)頭緒。。。 這樣這次的對(duì)接只能擱置下來(lái),偶爾就過(guò)來(lái)嘗試處理一下。
偶然的運(yùn)氣
postman 和瀏覽器測(cè)試都通過(guò),httpclient 調(diào)用去出現(xiàn)問(wèn)題,二者有什么區(qū)別呢? 瀏覽器訪(fǎng)問(wèn)了一下接口,使用 Charles 抓包工具進(jìn)行抓包分析:

尼瑪瀏覽器訪(fǎng)問(wèn)接口有很多頭部信息,估計(jì)是這里有貓膩。 就在這個(gè)時(shí)候一個(gè)同事也猜測(cè)可能是請(qǐng)求頭部信息的問(wèn)題,經(jīng)過(guò)嘗試問(wèn)題得解: 是少了一個(gè)頭部信息 User-Agent 頭部參數(shù)。
User_Agent 是什么?
User-Agent是Http協(xié)議中的一部分,屬于頭域的組成部分,User Agent也簡(jiǎn)稱(chēng)UA。用較為普通的一點(diǎn)來(lái)說(shuō),是一種向訪(fǎng)問(wèn)網(wǎng)站提供你所使用的瀏覽器類(lèi)型、操作系統(tǒng)及版本、CPU 類(lèi)型、瀏覽器渲染引擎、瀏覽器語(yǔ)言、瀏覽器插件等信息的標(biāo)識(shí)。UA字符串在每次瀏覽器 HTTP 請(qǐng)求時(shí)發(fā)送到服務(wù)器!
我尼瑪,這個(gè)問(wèn)題至此解決了,經(jīng)過(guò)扯皮問(wèn)題還是出現(xiàn)在第三方,第三方服務(wù)器進(jìn)行了設(shè)置對(duì)該請(qǐng)求接口的頭部信息進(jìn)行了驗(yàn)證。
bug 解決的不容易,太耗精力了,折磨的想打人,還想哭。。。文章來(lái)源:http://www.zghlxwxcb.cn/news/detail-788726.html
本文由 mdnice 多平臺(tái)發(fā)布文章來(lái)源地址http://www.zghlxwxcb.cn/news/detail-788726.html
到了這里,關(guān)于postman,瀏覽器測(cè)試接口正常,HttpClient 調(diào)用就報(bào)錯(cuò)的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!