Heim > Fragen und Antworten > Hauptteil
后台 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 是参数可以很灵活,不要求非得是字典。