【问题标题】:How do I stop MOYA/Alamfire from Escaping my body json parameters?如何阻止 MOYA/Alamfire 转义我的身体 json 参数?
【发布时间】:2018-07-12 15:09:49
【问题描述】:

我正在使用 Moya 和 Alamofire。它们紧密集成。但是,Moya 或 Alamofire 在 POST 请求中转义了我的 body json 参数。

我正在寻找在哪里以及如何防止这种转义发生。

例子:

{ 
  "credentials": { 
    "secret": 
jJWoBkc64O0VzcjRQv4MIuQv0HgRLiNQZL7GAhtINz6EKuaK+u+YkBMi9z3v6rqLBh8TD8lIO3F+5t7iJB/FJw==

查看转义到\/FJw==/FJw==

【问题讨论】:

  • "正在逃避我的身体 json 参数" 你能更明确一点吗?你有一个简单的例子吗?转义,你的意思是不要把你的参数放在请求正文中?还是添加百分比转义字符?
  • 您的 json 示例已损坏,但我猜您省略了双引号。在 JSON 字符串中 \/ 是一个有效的转义序列。你没有必要阻止它。
  • 这是显示问题的缩短版本。我需要删除转义,因为它会干扰我正在使用的 REST 服务
  • 如果 REST 服务不适用于有效的 JSON,它就会被破坏,这太不可思议了。还是你自己做的?为什么您认为\/ 是您的 REST 服务受到干扰的原因?请提供足够的信息。

标签: swift alamofire moya


【解决方案1】:

不幸的是,这个组合现在对我有用:

struct JSONStringArrayEncoding: ParameterEncoding {

func encode(_ urlRequest: URLRequestConvertible, with parameters: Parameters?) throws -> URLRequest {
    var urlRequest = urlRequest.urlRequest

    let data = try! JSONSerialization.data(withJSONObject: parameters!, options: JSONSerialization.WritingOptions.prettyPrinted)

    let json = NSString(data: data, encoding: String.Encoding.utf8.rawValue)
    if let json = json {
        print(json)
        let newJson = json.replacingOccurrences(of: "\\/", with: "/")
        urlRequest?.httpBody = newJson.data(using: String.Encoding(rawValue: String.Encoding.utf8.rawValue));
    }

    return urlRequest!
}   
}

然后在任务中

    var task: Task {
    switch self {
             case
         .postConnectAddress:
        return .requestParameters(parameters: parameters! , encoding: JSONStringArrayEncoding())

【讨论】:

    猜你喜欢
    • 2011-07-25
    • 1970-01-01
    • 1970-01-01
    • 2021-07-11
    • 2010-11-18
    • 2017-04-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多