登录

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

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

# iOS
PHP中文网PHP中文网2146 天前803 次浏览

全部回复(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
  • PHPzhong

    PHPzhong2017-04-18 09:30:35

    我最后的处理是直接在URL后面拼接这个参数值 直接”path+?参数“ 然后转成UTF8 。一般来说直接传参数的都是get类型的。

    回复
    0
  • PHP中文网

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

    请问楼主解决了没有,我遇到了和你一样的问题。很困扰。如果您已经解决了问题。请联系我一下。QQ:664071973

    回复
    0
  • 取消回复发送