使用AFN調(diào)用后臺接口的坑

記錄一下今天下午爬了一下午的坑吧~

前幾天新開一個新的app,界面的搭建的七七八八了经窖,接口也出了一部分坡垫,今天加班就準備調(diào)一下接口試試水,然后就是一下午的爬坑過程画侣。

首先冰悠,調(diào)用后臺的登陸接口,很順利配乱,后臺斷點攔截到了我的請求溉卓,我天真的以為接口就這么ok了,可是發(fā)現(xiàn)后臺給我在數(shù)據(jù)庫里面添加的賬號登陸不成功搬泥。叫后臺的小伙伴幫忙看看桑寨,后臺攔截我的請求發(fā)現(xiàn),我傳給他的參數(shù)他取不到值忿檩。

好了尉尾,問題來了,我正常的使用post請求燥透,請求也過去了沙咏,他為啥就是拿不到我的參數(shù)呢辨图?

剛開始的時候以為是后臺寫的有問題,他們改了幾次芭碍,發(fā)現(xiàn)還是取不到我傳過去的參數(shù)徒役,然后安卓的小伙子也過來了,說他們也試試窖壕,結(jié)果就是他們很順利的調(diào)成功了忧勿,后臺也是一把就拿到他們傳過去的參數(shù)。

沒辦法了瞻讽,問題應(yīng)該就是在我們iOS這邊了鸳吸,一步步的走請求的流程也沒看出什么不一樣的啊。速勇。晌砾。。烦磁。我也不能改AFN的內(nèi)部代碼吧

試了幾次發(fā)現(xiàn)問題并沒有解決养匈,然后就灰溜溜的拿上一個項目的網(wǎng)絡(luò)請求試了一下,結(jié)果還是一樣都伪,他們是真的拿不到我傳過去的參數(shù)呕乎。我用postMan調(diào)用接口的時候,他們是可以拿到參數(shù)的陨晶。問了一下猬仁,后臺說參數(shù)是放在body里面的,我趕緊問了一下跟我一起開發(fā)的iOS同伙先誉,他說參數(shù)不是放在body里面的湿刽,我就照著上個項目里面的把請求方法改了,把參數(shù)放body里面去了褐耳,然后試了一把诈闺,心里默默祈禱能夠成功,結(jié)果并沒有什么用铃芦。心里真的是賊急躁买雾,今天怕是不搞定回不去了。

找不到問題在哪杨帽,找不到問題在哪漓穿,找不到問題在哪。

默默的拿出很久以前的項目又重新試了一次注盈,還是調(diào)這個借口晃危,一問后臺,小伙伴說有數(shù)據(jù)了,沒錯有數(shù)據(jù)了僚饭,可把我給高興壞了震叮。慢慢的就對照著請求方法一行一行的看,沒看出問題鳍鸵,兩邊寫的都一樣的啊苇瓣。打開sharedClient一看,發(fā)現(xiàn)不一樣的了

我們app這么寫的

+ (instancetype)sharedClient {
    static NetWorkClient *sharedClient = nil;
    static dispatch_once_t onceToken;
    dispatch_once(&onceToken, ^{
        NSURL *baseUrl = [NSURL URLWithString:[NetWorkConfig sharedConfig].baseUrl];
        //解決AFN中relativeToURL:self.baseURL方法去掉尾部字符串問題,實際作用是給baseUrl后面拼一個'/'
        baseUrl = [baseUrl URLByAppendingPathComponent:@""];
        sharedClient = [[NetWorkClient alloc] initWithBaseURL:baseUrl];
        sharedClient.responseSerializer = [AFJSONResponseSerializer serializer];
        sharedClient.requestSerializer = [AFJSONRequestSerializer serializer];
        [sharedClient.requestSerializer setValue:@"application/json" forHTTPHeaderField:@"Accept"];
        [sharedClient.requestSerializer setValue:@"application/json;charset=UTF-8" forHTTPHeaderField:@"Content-Type"];
    
    });
    return sharedClient;
}

以前app是這么寫的

+ (instancetype)sharedClient {
    static NetWorkClient *sharedClient = nil;
    static dispatch_once_t onceToken;
    dispatch_once(&onceToken, ^{
        NSURL *baseUrl = [NSURL URLWithString:[NetWorkConfig sharedConfig].baseUrl];
        //解決AFN中relativeToURL:self.baseURL方法去掉尾部字符串問題,實際作用是給baseUrl后面拼一個'/'
        baseUrl = [baseUrl URLByAppendingPathComponent:@""];
        sharedClient = [[NetWorkClient alloc] initWithBaseURL:baseUrl];
        ((AFJSONResponseSerializer *)sharedClient.responseSerializer).removesKeysWithNullValues = YES;
        // 設(shè)置非校驗證書模式
        sharedClient.securityPolicy.allowInvalidCertificates = YES;
        [sharedClient.securityPolicy setValidatesDomainName:NO];
    
    });
    return sharedClient;
}

我還以為是下面3句話起作用了

((AFJSONResponseSerializer *)sharedClient.responseSerializer).removesKeysWithNullValues = YES;
// 設(shè)置非校驗證書模式
sharedClient.securityPolicy.allowInvalidCertificates = YES;
[sharedClient.securityPolicy setValidatesDomainName:NO];

后面經(jīng)過多次測試發(fā)現(xiàn)這個并沒有什么影響偿乖,主要問題是出在下面4句話上面

sharedClient.responseSerializer = [AFJSONResponseSerializer serializer];
sharedClient.requestSerializer = [AFJSONRequestSerializer serializer];        
[sharedClient.requestSerializer setValue:@"application/json" forHTTPHeaderField:@"Accept"];
[sharedClient.requestSerializer setValue:@"application/json;charset=UTF-8" forHTTPHeaderField:@"Content-Type"];

只要一設(shè)置這個击罪,后臺就拿不到我給他們的參數(shù)值。

但是不知道為啥設(shè)置了這個他們就拿不到我們傳的參數(shù)贪薪,去問了一下同事媳禁,他叫我抓包看看請求的request和response,恩画切,好注意竣稽,我看不太懂抓包的數(shù)據(jù),請來大神同伴過來幫忙看一下霍弹,下面是調(diào)用成功時返回的數(shù)據(jù)


成功.png

再來看看把上面4行代碼加上毫别,設(shè)置了requestSerializer以后,后臺獲取不到數(shù)據(jù)的時的數(shù)據(jù)

失敗.png

我并沒有看出問題在哪里典格,同伴說設(shè)置了requestSerializer之后岛宦,我們傳過去的參數(shù)是json數(shù)據(jù)類型的,他們沒拿到钝计,如果不設(shè)置requestSerializer的話,我們傳過去的參數(shù)是Form表單數(shù)據(jù)齐佳。

問題所在.png

問題終于解決了私恬。。炼吴。本鸣。。
雖然不知道到底是不是這個問題硅蹦,但是還是記錄一下整個下午解決這個問題的過程吧~

有知道這個問題到底是為啥的大神荣德,請指正,謝謝

慢慢來童芹,一步一個巴掌印~~~

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末涮瞻,一起剝皮案震驚了整個濱河市趟咆,隨后出現(xiàn)的幾起案子睡蟋,更是在濱河造成了極大的恐慌,老刑警劉巖诈唬,帶你破解...
    沈念sama閱讀 219,110評論 6 508
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異宁否,居然都是意外死亡窒升,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,443評論 3 395
  • 文/潘曉璐 我一進店門慕匠,熙熙樓的掌柜王于貴愁眉苦臉地迎上來饱须,“玉大人,你說我怎么就攤上這事台谊∪叵保” “怎么了?”我有些...
    開封第一講書人閱讀 165,474評論 0 356
  • 文/不壞的土叔 我叫張陵青伤,是天一觀的道長督怜。 經(jīng)常有香客問我,道長狠角,這世上最難降的妖魔是什么号杠? 我笑而不...
    開封第一講書人閱讀 58,881評論 1 295
  • 正文 為了忘掉前任,我火速辦了婚禮丰歌,結(jié)果婚禮上姨蟋,老公的妹妹穿的比我還像新娘。我一直安慰自己立帖,他們只是感情好眼溶,可當(dāng)我...
    茶點故事閱讀 67,902評論 6 392
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著晓勇,像睡著了一般堂飞。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上绑咱,一...
    開封第一講書人閱讀 51,698評論 1 305
  • 那天绰筛,我揣著相機與錄音,去河邊找鬼描融。 笑死铝噩,一個胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的窿克。 我是一名探鬼主播骏庸,決...
    沈念sama閱讀 40,418評論 3 419
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼年叮!你這毒婦竟也來了具被?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 39,332評論 0 276
  • 序言:老撾萬榮一對情侶失蹤只损,失蹤者是張志新(化名)和其女友劉穎硬猫,沒想到半個月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,796評論 1 316
  • 正文 獨居荒郊野嶺守林人離奇死亡啸蜜,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,968評論 3 337
  • 正文 我和宋清朗相戀三年坑雅,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片衬横。...
    茶點故事閱讀 40,110評論 1 351
  • 序言:一個原本活蹦亂跳的男人離奇死亡裹粤,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出蜂林,到底是詐尸還是另有隱情遥诉,我是刑警寧澤,帶...
    沈念sama閱讀 35,792評論 5 346
  • 正文 年R本政府宣布噪叙,位于F島的核電站矮锈,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏睁蕾。R本人自食惡果不足惜苞笨,卻給世界環(huán)境...
    茶點故事閱讀 41,455評論 3 331
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望子眶。 院中可真熱鬧瀑凝,春花似錦、人聲如沸臭杰。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,003評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽渴杆。三九已至寥枝,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間磁奖,已是汗流浹背囊拜。 一陣腳步聲響...
    開封第一講書人閱讀 33,130評論 1 272
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留点寥,地道東北人艾疟。 一個月前我還...
    沈念sama閱讀 48,348評論 3 373
  • 正文 我出身青樓来吩,卻偏偏與公主長得像敢辩,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子弟疆,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 45,047評論 2 355

推薦閱讀更多精彩內(nèi)容

  • Android 自定義View的各種姿勢1 Activity的顯示之ViewRootImpl詳解 Activity...
    passiontim閱讀 172,178評論 25 707
  • 最近戚长,一個同事打算離職,聊到技術(shù)上怠苔,就順便說道一個話題:AFN的底層原理你知道嗎同廉? 恰好,最近正好處于三個項目交接...
    幸福曉杰2016閱讀 476評論 0 1
  • iOS網(wǎng)絡(luò)架構(gòu)討論梳理整理中。迫肖。锅劝。 其實如果沒有APIManager這一層是沒法使用delegate的,畢竟多個單...
    yhtang閱讀 5,193評論 1 23
  • 只要能讓我忘記你蟆湖,我怎樣都可以故爵。 曾經(jīng)的心那么真,不是撕去幾頁掛歷就能忘記隅津。 如果有記憶大師诬垂,請儲存那過去的記憶。
    情海無涯閱讀 166評論 0 0
  • 我怎么如此幸運:我可以帶著2017年所有的回憶登上2018新一紀生命列車伦仍! 我怎么如此幸運:2017年籌備裝修國粹...
    國粹堂1閱讀 144評論 0 3