Swift:无法将 .prettyPrinted 格式的字符串添加到 forHTTPHeaderField

标签 swift nsmutableurlrequest nshttpurlresponse

继续 from this question ,

我正在尝试将 [String : Any] 转换为 String,然后将该 String 传递给 forHTTPHeaderField

尝试 1: 没有 Pretty

let encoder = JSONEncoder()

if let json = try? encoder.encode(jsonDict) {
   convertedString = String(data: json, encoding: .utf8)!
}

print("JsonStringFormat     ", convertedString )

let url = NSURL(string: getMenuURL)
let request = NSMutableURLRequest(url: url! as URL)
request.setValue(convertedString, forHTTPHeaderField: "SessionInfo")

print("\nHEADer__reQQ__    ", request.allHTTPHeaderFields)

输出:

JsonStringFormat      {"Token":"96FFC5B994514B3D","UICulture":"en-CA ","LanguageCode":"ENG","CompanyID":"QAP","IMEINo":"1jzBG3TSrMzj\/tKihlEv8g=="}
HEADer__reQQ__     ["SessionInfo": "{\"Token\":\"96FFC5B994514B3D\",\"LanguageCode\":\"ENG\",\"UICulture\":\"en-CA \",\"CompanyID\":\"QAP\",\"IMEINo\":\"1jzBG3TSrMzj\\/tKihlEv8g==\"}"]

尝试 2: 打印 .pretty

let encoder = JSONEncoder()

// ADDING PRETTY FORMAT
encoder.outputFormatting = .prettyPrinted

if let json = try? encoder.encode(jsonDict) {
   convertedString = String(data: json, encoding: .utf8)!
}

print("PrettyJsonStringFormat     ", convertedString )

let url = NSURL(string: getMenuURL)
let request = NSMutableURLRequest(url: url! as URL)
request.setValue(convertedString, forHTTPHeaderField: "SessionInfo")

print("\nPrettyHeader__    ", request.allHTTPHeaderFields)

输出:

PrettyJsonStringFormat      {
  "Token" : "70E277954143414A",
  "UICulture" : "en-CA ",
  "LanguageCode" : "ENG",
  "CompanyID" : "QAP",
  "IMEINo" : "1jzBG3TSrMzj\/tKihlEv8g=="
}

PrettyHeader__    [:]

如果我选择尝试 1,BackSlash\ 将附加到该值中。为避免这种情况,我选择了尝试 2 [Pretty Printed]

我不知道为什么 request.allHTTPHeaderFields 没有添加 header 值。

请多指教。

最佳答案

你应该在这个 link 中检查这个答案

您对标准的理解是正确的。过去,RFC 2616 下支持多行标题值.此功能被称为“线折叠”:

HTTP/1.1 header field values can be folded onto multiple lines if the continuation line begins with space or horizontal tab. All linear white space, including folding, has the same semantics as SP. A recipient MAY replace any linear white space with a single SP before interpreting the field value or forwarding the message downstream.

关于Swift:无法将 .prettyPrinted 格式的字符串添加到 forHTTPHeaderField,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56593307/

相关文章:

ios - 为什么 tableView 的 FooterView 在 vi​​ewDidLoad() 中不存在,如何解决?

swift - Alamofire 自定义参数编码

objective-c - 从 NSHTTPURLResponse 获取 cookie

swift - 如何处理 500 个 http 错误

ios - 我正在获取一个不存在的文件的标题信息?

swift - EXIF数据读写

swift - 推送到 git 后链接的 FrameWork 和库变灰

ios - NSMutableURLRequest 超时间隔

iphone - setHttpMethod 奇怪的行为

arrays - 如何快速遍历数组