继续 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/