日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

AFN post的数据编码格式问题

發布時間:2025/3/15 编程问答 19 豆豆
生活随笔 收集整理的這篇文章主要介紹了 AFN post的数据编码格式问题 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

想到寫任何關于AFN的東西其實我是拒絕的,因為自己這也是第一次用,畢竟AFN現在是最為流行的網絡框架了,害怕自己理解的有誤,所以不敢造次!

先在這里大致講解一下過程吧,后期發現了再更正(主要是想讓看官避免遇到同類的問題),可能原理說得并不正確,所以希望大家直接看解決辦法

在這次使用的過程中,就遇到了編碼格式問題,后來經過抓包(自己客戶端還沒用過charles,說起來也是慚愧,這篇博客后就要滾去學習一下了),發現是自己客戶端的編碼格式的問題

具體什么問題,我下面說:

?key point:

大家都知道AFN默認post接受的參數是id類型的,而且他內部已經實現了參數的編碼,僅僅是對參數,如果將url整體傳入的話需要自己編碼

如果你穿的是nsmutabledictionary的話就不需要自己編碼,他內部已經幫你處理好了!

問題其實就是出在這里

?

后臺(接口文檔)要求我們傳的格式是類似于:

tartdate=2015-01-01&enddate=2015-11-01&crdNo=6210888100208023&identityNo=510703198901062430&pageNum=1&trcode=20003&channelflag=1

這種格式的post參數(真是*了dog了),而且加密方式是也很奇葩,而且而且他返回回來的是json,發過去的不是,也是奇葩!這里就不說了

?

  • 一.沒辦法,我就只能把以前的nsdictionary改成nsstring

見下圖(我簡單的封裝的AFN):

?

?

后來那邊服務器打開過后,我們進行對接,發現總是返回我們數據簽名不合法!

但是我和安卓組檢查了加密方式和最終的加密結果進行一一比對也還是沒有發現問題,于是大boss(不是搞iOS的)就說他看一看,最后他也說沒發現加密有什么問題(安卓組已經通了),

?

  • 二.于是懷疑是不是post的編碼格式有問題,原先我發送請求的代碼如下:

?

?

  • 三.后來嘗試更改為:

?

也還是報錯,于是網上爬文,也嘗試了設置其他的一些請求頭,還是沒有效果

?

于是大boss說只有抓包才能看出問題!抓包就抓包吧,但是抓出來的結果和安卓組的一樣!

咦!不對,post出去的數據不對啊(抱歉,當時沒有截圖),你傳出去的編碼格式不對啊,

本來應該類似于:

  tartdate=2015-01-01&enddate=2015-11-01&crdNo=6210888100208023&identityNo=510703198901062430&pageNum=1&trcode=20003&channelflag=1

  &sigh=********** ?這種格式的

但是實際上是(網上隨便測試的):

  https://www.google.co.jp/?gfe_rd=cr&ei=ey9lVsLPJcfD8Aev6a74Bw&gws_rd=ssl#q=%E4%BD%A0%E5%A5%BD++%E4%B8%AD%E5%9B%BD

?

四.就是說傳出去的時候AFN自動把&給我們進行url編碼了,但是實際上我們是不需要他給我們進行編碼的

  所以又爬文,又是試方法,發現還是沒用!于是大boss就說他也不知道為什么了,按常理這么成熟的框架應該會有這方面的解決方案的啊,他就叫我再看看,如果還是不行,就叫我換ASI

  OMG,老大,這不是開玩笑的吧,換框架你知道有多痛苦?而且基本上我這個都寫好了,現在叫我改,豈不是要我命?? 而且你還說第二天要發布測試版(發布個*啊)!

?

  我實在是不想改框架,于是就拿安卓代碼來看,最后發現他們竟然是用的map(就是oc的字典),不是說好的不是字典,是字符串嗎? 你們原來不是拼接的post參數嘛??

  什么時候改的,為什么不告訴我你們換了,你們還就在我的座位旁邊啊啊啊啊啊啊…?

?好吧,崩潰心情可想而知

?

五.于是我就做了最后的嘗試,把接受參數換成NSDictionary

?

六.傳過去的格式:

然后就TM成功了!

?

?

我想說明的其實就是上面那句話:

AFN內部已經實現了參數的編碼,僅僅是對參數,如果將url整體傳入的話需要自己編碼

如果你傳的是NSMutableDictionary的話就不需要自己編碼,他內部已經幫你處理好了!

?

?

希望大家不要遇見這種問題!

轉載請注明出處,謝謝!

?

轉載于:https://www.cnblogs.com/WayneLiu/p/5080666.html

總結

以上是生活随笔為你收集整理的AFN post的数据编码格式问题的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。