Мойя изменить URL

Я пытаюсь позвонить на Google Places Api, используя Moya, и у меня проблема с URL-адресом. Maya изменить символы в моем URL. В этом случае, например, перед символом ? добавляется %3f и заменяется , на %2C. Когда я копирую и вставляю этот адрес в свой веб-браузер, я получаю сообщение об ошибке, но когда я удаляю %3f и изменяю и %2C на ,, я получаю API правильной формы ответа. Что мне следует установить в Moya, если я не хочу изменять эти символы в моем URL-адресе?

мой Moya провайдер выглядит так:

extension GooglePlacesService: TargetType {

var baseURL: URL {
    return URL(string: "https://maps.googleapis.com")!
}

var path: String {
    switch self {
    case .gasStation:
        return "/maps/api/place/nearbysearch/json?"
    }
}

var parameters: [String : Any]? {
    switch self {
    case .gasStation(let lat, let long, let type):
        return ["location": "\(lat),\(long)", "type" : "gas_station", "rankby" : "distance", "keyword" : "\(type)", "key" : GoogleKeys.googlePlacesKey]
    }
}

var parameterEncoding: ParameterEncoding {
    switch self {
    case .gasStation:
        return URLEncoding.queryString
    }
}

var method: Moya.Method {
    switch self {
    case .gasStation:
        return .get
    }
}

var sampleData: Data {
    switch self {
    case .gasStation:
        return "".utf8Encoded
    }
}

var task: Task {
    switch self {
    case .gasStation:
        return .request
    }
  }
}


private extension String {
var urlEscaped: String {
    return self.addingPercentEncoding(withAllowedCharacters: .urlHostAllowed)!
}

var utf8Encoded: Data {
    return self.data(using: .utf8)!
  }
}

URL-адрес, который генерирует Moya, выглядит так (не работает с API):

https://maps.googleapis.com/maps/api/place/nearbysearch/json%3F?key=MYAPIKEY&keyword=XXXXXX&location=51.0910166687869%2C17.0157277622482&rankby=distance&type=gas_station

URL, который работает с API:

https://maps.googleapis.com/maps/api/place/nearbysearch/json?key=MYAPIKEY&keyword=XXXXXX&location=51.0910166687869,17.0157277622482&rankby=distance&type=gas_station


person PiterPan    schedule 29.05.2017    source источник
comment
Проблема решена. В URL вам нужно экранировать `? `отметка. Правильный URL, который мы должны использовать в Moya, выглядит так: https://maps.googleapis.com/maps/api/place/nearbysearch/json параметры: key=MYAPIKEY&keyword=XXXXXX&location=51.0910166687869,17.0157277622482&rankby=distance&type=gas_station   -  person PiterPan    schedule 30.05.2017
comment
Не могли бы вы написать полное решение? Я новичок в Мойе и тоже столкнулся с этой ошибкой. Спасибо.   -  person user-unknown    schedule 23.08.2017


Ответы (1)


У меня была такая же проблема с '?' преобразуется в '% 3F':  введите описание изображения здесь

Решение состоит в том, чтобы оставить путь без сложных символов (например, "?", ",") И вместо этого поместить их в var Task установки Moya с URLEncoding.default: введите здесь описание изображения  введите описание изображения здесь

person Vitya Shurapov    schedule 07.11.2018