gpt4 book ai didi

ios - URLRequest 编码未捕获特殊字符

转载 作者:行者123 更新时间:2023-11-30 11:46:00 28 4
gpt4 key购买 nike

我正在使用下面的代码来创建 URLRequest,但特殊字符(如 &)未正确编码。我做错了什么?

  var request = URLRequest(url: URL(string: "http://\(hostToUse)/user/login")!)
request.httpMethod = "POST"
request.timeoutInterval = 120.0
var postString = "data={\"userName\":\"\(username)\",\"password\":\"\(password)\"}"
postString = postString.addingPercentEncoding(withAllowedCharacters: .alphanumerics)!
postString = postString.replacingOccurrences(of: " ", with: "")
request.httpBody = postString.data(using: .utf8, allowLossyConversion: false)
request.setValue("application/x-www-form-urlencoded", forHTTPHeaderField: "Content-Type")

最佳答案

此代码可能存在许多问题:

  • 您将在单个 URL 编码表单字段中上传 JSON 数据 block ,并且不使用任何其他字段。为什么不直接将上传格式设为 JSON 并完全放弃 URL 编码呢?
  • 您试图对整个“fieldname=value”进行 URL 编码,而您应该只对值部分进行 URL 编码。
  • 字母数字字符集太宽泛,包括任何看起来像数字的东西。 URL 的合法字符集比这个小得多。

顺便说一句,我相当确定,即使 URLQueryAllowedCharacterSet 对于单个查询字符串字段来说也太宽泛,因为它允许在正常使用中保留等号和与号等字符作为字段分隔符查询字符串。

为了获得最大的安全性,您应该使用自己的字符集,其中包含未保留的字符:

    [NSCharacterSet characterSetWithCharactersInString:@"abcdefghijklmnopqrstuv"
"wxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789-_.~"]

或者更好的是,使用NSURLComponents。它具有专门用于构造查询字符串的属性。

关于ios - URLRequest 编码未捕获特殊字符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48829690/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com