• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    迪恩网络公众号

swift - Alamofire自定义参数编码

[复制链接]
菜鸟教程小白 发表于 2022-10-22 09:02:20 | 显示全部楼层 |阅读模式 打印 上一主题 下一主题

我使用的是Alamoire,我想用内容类型“text/html;charset=utf-8”对参数进行编码。我按照文档https://github.com/Alamofire/Alamofire进行了自定义参数编码,并创建了

let custom: (URLRequestConvertible, parameters: [String: AnyObject]?) -> (NSURLRequest, NSError?) = {
    (URLRequest, parameters) in
    let mutableURLRequest = URLRequest.URLRequest.mutableCopy() as! NSMutableURLRequest
    mutableURLRequest.setValue("text/html; charset=utf-8", forHTTPHeaderField: "Content-Type")
    mutableURLRequest.body =  // don't know if I need to set this
    return (mutableURLRequest, nil)
}

func postData(){
    Alamofire.request(.POST, baseUrl, parameters: parameters, encoding: .Custom(custom))
        .responseString{ (request, response, data, error) in
    println("blah")
    }
}

当我尝试在Alamoire请求中使用custom并得到错误“cannot make responsestring with argument list of type(、u、uu->”,但是,如果编码更改为类似预设的.url,这不是问题,那么问题似乎在我的自定义实现中?
如果有区别,我的参数设置如下:
var parameters = [String: AnyObject]()
func setParams(){
        parameters = [
        "CONTRACT ID" : chosenContract!.iD.toInt()!,
        "FEE AMOUNT" : 0,
        "TRANSACT DATE" : today
    ]
}



Best Answer-推荐答案


这里有几个问题。让我们把它们分解为1x1。
编译器问题
编译器的问题是因为返回元组的类型错误。在AlamoFire1.3.0中,我们将返回类型改为一个NSMutableURLRequest类型,这最终使总体上的操作更加容易。这样可以解决编译器问题。
设置httpbody
现在你有几个选择。
选项1-将数据编码为JSON

let options = NSJSONWritingOptions()
let data = try NSJSONSerialization.dataWithJSONObject(parameters!, options: options)

mutableURLRequest.setValue("application/json", forHTTPHeaderField: "Content-Type")
mutableURLRequest.HTTPBody = data

根据你所发布的信息,我假设你真的想要。参数的url编码。
选项2-使用.url大小写
let parameters: [String: AnyObject] = [:] // fill in
let encodableURLRequest = NSURLRequest(URL: URL)
let encodedURLRequest = ParameterEncoding.URL.encode(encodableURLRequest, parameters).0

let mutableURLRequest = NSMutableURLRequest(URL: encodedURLRequest.URLString)
mutableURLRequest.HTTPMethod = "OST"
mutableURLRequest.setValue("text/html; charset=utf-8", forHTTPHeaderField: "Content-Type")

Alamofire.request(mutableURLRequest)
         .response { request, response, data, error in
             print(request)
             print(response)
             print(error)
         }

希望这有助于你前进。祝你好运!

关于swift - Alamofire自定义参数编码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31860664/

回复

使用道具 举报

懒得打字嘛,点击右侧快捷回复 【右侧内容,后台自定义】
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关注0

粉丝2

帖子830918

发布主题
阅读排行 更多
广告位

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

在线客服(服务时间 9:00~18:00)

在线QQ客服
地址:深圳市南山区西丽大学城创智工业园
电邮:jeky_zhao#qq.com
移动电话:139-2527-9053

Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap