4

Google Placesを使用して Api を呼び出そうとしましMoyaたが、URL に問題があります。MayaURL の文字を変更します。この場合、たとえば、文字?を追加%3fして変更する前,%2C. このアドレスをコピーしてウェブブラウザに貼り付けるとエラーが表示されますが、削除%3fして変更して%2Cオン,にすると、正解フォーム API が表示されます。MoyaURL でこの文字を変更したくない場合は、何を設定すればよいですか?

私の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)!
  }
}

Moya を生成する URL は次のようになります (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

API で動作する URL:

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

4

1 に答える 1