如何防止阿拉莫火将"&"标志放在参数前面



我是Swift的初学者。我正在尝试使用PUBG api创建一个应用程序。我使用Alamofire添加我的标题。我的故事板上有一个文本字段,我在那里输入我的昵称,并从pubg-api中获取数据。我的问题是Alamofire在参数前面添加了"&"符号,所以这会破坏url。如何防止Alamofire在参数上加"&"号?

let playerURL = "https://api.pubg.com/shards/pc-eu/players?filter[playerNames]"
func findPlayer(playerName:String){
let httpParameters : Parameters = ["":playerName]
Alamofire.request(playerURL,method:.get,parameters:httpParameters,encoding:URLEncoding.default,headers:httpHeaders).responseJSON{response in switch response.result{
case .success(let value):
let response = JSON(value)
print(response["data"])
case .failure(_):
return
}
}
}

URL应该是这样的:

https://api.pubg.com/shards/pc-eu/players?filter%5BplayerNames%5D=PlayerName

相反,它变成了这样:

https://api.pubg.com/shards/pc-eu/players?filter%5BplayerNames%5D&播放器名称

如果您使用Alamofire对参数进行编码,则需要让它对参数进行加密:

let playerURL = "https://api.pubg.com/shards/pc-eu/players"
....
let httpParameters : Parameters = ["filter[playerNames]": playerName]
...

我的整个测试用例如下:

  • 创建一个空白的单视图项目
  • 在AppDelegate中添加:

    let playerURL = "https://api.pubg.com/shards/pc-eu/players"
    func findPlayer(playerName:String){
    let httpParameters : Parameters = ["filter[playerNames]": playerName]
    let request = Alamofire.request(playerURL,
    method:.get,
    parameters:httpParameters)
    print(request)
    }
    
  • application(_:didFinishLaunchingWithOptions:)中添加:

    findPlayer(playerName: "PLAYERNAME")
    
  • 运行

输出:

GET https://api.pubg.com/shards/pc-eu/players?filter%5BplayerNames%5D=PLAYERNAME

最新更新