Я пытаюсь позвонить на 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
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