搜尋

首頁  >  問答  >  主體

ios - Alamofire中请求参数无名称的问题

后台 Api 中单个参数的时候没有指定参数名,而 Alamofire 中的 parameters 是字典类型的。我尝试着 param = ["": "参数"] 发现是不行的。
在 AFN 中因为参数是 id 类型的,所以可以直接将一个字符串扔进去。求解 Alamofire 中怎么做 T T (后台有很多这样的 Api,安卓那边都可以,所以没必要改 Api 了。。。。)

PHP中文网PHP中文网2771 天前1153

全部回覆(5)我來回復

  • 巴扎黑

    巴扎黑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無關

    1. 從上邊的邏輯分析伺服器處理url有2種情況一種只要只有一個value就直接取它的值那麼你隨便給個key試試看了另一種只在key為null而value不為null下才觸發那麼用param = @{[NSNull null]: param} 試試看還不行就去看看代碼alamofire是怎麼把parameters處理成query的查看下完整的url 確定是否是alamofire過濾了
      (ps 沒寫過伺服器程式碼和alamofire 很多是猜測僅供參考)

    回覆
    0
  • 黄舟

    黄舟2017-04-18 09:30:35

    不指定參數名稱,可能就是把這個當作參數,例如那種將整個請求的上送參數當作一個進行處理xml,json來處理的。
    alamofire沒用過​​,你可以找下有沒有上送一個json字串的那種方式,也是同樣沒有定義參數名稱的。

    回覆
    0
  • 阿神

    阿神2017-04-18 09:30:35

    Alamofire 的 request 方法裡, parameters 只能是個字典,這有點不靈活了。不過你可以嘗試用下面這個函數:

    request(URLRequest: URLRequestConvertible) -> Request 

    自己建立一個 NSMutableURLRequest,設定它的 header, body, 然後傳給上面那個 request 函數。自己建立 NSMutableURLRequest 是參數可以很靈活,不要求非得是字典。

    回覆
    0
  • PHPz

    PHPz2017-04-18 09:30:35

    我最後的處理是直接在URL後面拼接這個參數值 直接”path+?參數“ 然後轉成UTF8 。一般來說直接傳參數的都是get類型的。

    回覆
    0
  • PHP中文网

    PHP中文网2017-04-18 09:30:35

    請問樓主解決了沒有,我遇到了跟​​你一樣的問題。很困擾。如果您已經解決了問題。請聯絡我一下。 QQ:664071973

    回覆
    0
  • 取消回覆