后台 Api 中单个参数的时候没有指定参数名,而 Alamofire 中的 parameters 是字典类型的。我尝试着 param = ["": "参数"]
发现是不行的。
在 AFN 中因为参数是 id 类型的,所以可以直接将一个字符串扔进去。求解 Alamofire 中怎么做 T T (后台有很多这样的 Api,安卓那边都可以,所以没必要改 Api 了。。。。)
巴扎黑2017-04-18 09:30:35
scheme://host/path?key=value&key=value
在get方式中你傳入的parameters到後邊都是處理成上邊的key=value這樣的形式
伺服器拿到這樣的url 然後根據key去取相應的value
其實AFN在處理NSString的param時url為scheme://host/path?null=value
伺服器當且僅當在單一參數可以這樣處理吧 反正拿到的value就是需要的和key無關
從上邊的邏輯分析伺服器處理url有2種情況一種只要只有一個value就直接取它的值那麼你隨便給個key試試看了另一種只在key為null而value不為null下才觸發那麼用param = @{[NSNull null]: param} 試試看還不行就去看看代碼alamofire是怎麼把parameters處理成query的查看下完整的url 確定是否是alamofire過濾了
(ps 沒寫過伺服器程式碼和alamofire 很多是猜測僅供參考)
黄舟2017-04-18 09:30:35
不指定參數名稱,可能就是把這個當作參數,例如那種將整個請求的上送參數當作一個進行處理xml,json來處理的。
alamofire沒用過,你可以找下有沒有上送一個json字串的那種方式,也是同樣沒有定義參數名稱的。
阿神2017-04-18 09:30:35
Alamofire 的 request 方法裡, parameters 只能是個字典,這有點不靈活了。不過你可以嘗試用下面這個函數:
request(URLRequest: URLRequestConvertible) -> Request
自己建立一個 NSMutableURLRequest,設定它的 header, body, 然後傳給上面那個 request 函數。自己建立 NSMutableURLRequest 是參數可以很靈活,不要求非得是字典。