2017-02-16 5 views
0

의 인코딩에서 Alamofire을 차단하는 방법은 같은 URL이 있습니다쿼리 매개 변수

https://baseUrl/v2/orders/bookings?ourl=411093%7cMdTal8dUR6xpXXpzOiGgD1hRFnOyAHeo0Om9HeuB4Mk%3d

내가 좋아하는 Alamofire를 사용 : 나는 URLRequestConvertible 매개 변수와 내가 전달하고있어 그 매개 변수를 얻을 수있는 사용자 정의 열거 클래스를 만드는거야 요청을 로깅

Alamofire.request(HotelBookingConfirmationRouter.get(orderUrl)) 
     .responseObject{(response: DataResponse<HotelBookingConfirmation>) in } 

enum HotelBookingConfirmationRouter: URLRequestConvertible { 

case get(String) 

public func asURLRequest() throws -> URLRequest { 

    var method: HTTPMethod { 

     return .get 
    } 

    let url: URL = { 

     let url = URL(string: RBHWebServiceConfiguration.endpoint())! 

     return url.appendingPathComponent(HotelAPI.bookingConfirmation) 
    }() 

    let params: ([String: String]) = { 

     switch self { 
     case .get(let ticketUrl): 

      var dict = ["" : ""] 
      dict = [ "ourl" : ticketUrl] 
      return dict 
     } 
    }() 

    var urlRequest = URLRequest(url: url) 
    urlRequest.setValue("MOBILE_APP", forHTTPHeaderField: "channel_name") 

    let encoding    = URLEncoding.queryString 
    var encodedRequest   = try! encoding.encode(urlRequest, with: params) 
    encodedRequest.httpMethod  = method.rawValue 
    encodedRequest.timeoutInterval = 30 

    return encodedRequest 
} 
} 

을 alamofire, 나는 나타납니다

https://baseUrl/v2/orders/bookings?ourl= 411093%2547cMdTal8dUR6xpXXpzOiGgD1hRFnOyAHeo0Om9HeuB4Mk%3d

쿼리 문자열 "2547"가 아닌 "7CM"

그러나, 나는 누군가가 나를

답변

0

당신은에 '%'문자가이 문제를 해결하기 위해 기쁘게 도움이 같은 매개 변수를 유지해야하는 즉, 인코딩되어 당신의 쿼리 값을 백분율로 인코딩하면 '% 25'(으)로 바뀝니다. https://en.wikipedia.org/wiki/Percent-encoding

나의 제안은 당신이 그렇게 할 수없는 경우 단순히 수동으로 URL을 구성, 시도하고 % 문자 제거 될 것이다 :

당신은 여기에 더 많은 정보를 찾을 수 있습니다.

좋은 하루 보내십시오. :) 데얀.