2017-02-02 10 views
0

私の蒸気ウェブサービスからGoogle Places APIに簡単なリクエストを送信しようとしています。蒸気クライアントで苦労しています

これは私のコントローラは次のようになります。それはそれと同じくらい簡単であるべき

import Vapor 
import HTTP 
import VaporPostgreSQL 

final class MainController { 

var currentDroplet: Droplet! 

func addRoutes(drop: Droplet) { 

    currentDroplet = drop 
    drop.get("places",String.self, String.self, handler: getNearbyPlaces) 

} 

func getNearbyPlaces(request: Request, lat: String, long: String) throws -> ResponseRepresentable { 

    let googleAPIKey = "MY_KEY" 
    let googlePlacesBaseURL = "https://maps.googleapis.com/maps/api/place/nearbysearch" 

    let url = googlePlacesBaseURL + "/json?location=\(lat),\(long)&radius=500&types=food&key=" + googleAPIKey 

    print(url) 

    let apiResponse = try drop.client.get(url) 

    print(apiResponse) 

    return apiResponse.json != nil ? apiResponse.json! : "Something went bad" 


    } 
} 

、しかし私はそれを呼び出すときに、要求が長時間掛かって保持し、それがいることを500 注意を返します。コンソールに印刷されたurlは、ブラウザで直接正常に動作します。 エラーをキャッチしてデバッグする便利な方法を見つけられませんでした。

+0

は、URLでエンコードされていますか? – muescha

+0

コンソールにログされたURLは、ブラウザでうまく動作します。 –

+0

ブラウザーは独自のURLを適切な形式に変換します。プログラムを呼び出すと、おそらくそれをエンコードする必要があります。 – muescha

答えて

1

同様の呼び出しを行うには、import Foundationdrop.client = FoundationClient.self~main.swiftを追加する必要がありました。

+0

それがそうでした。まるで魔法のように。どうもありがとう! Docsで指定していないと信じられません... –

+2

'drop.client'は' let'です。それを割り当てることはできません。他の解決策? –