2017-09-26 7 views
2

おはようございます、ここで初心者はスウィフト/アラモファイアを学びます。私はこれで2日間ほど苦労して、やり直す準備ができています。Alamofire encoding invalidURL

URLが訂正されて作成されたように見えますが、リクエストを行うとエラーが発生します。 Xcodeのデバッグログを見ると、要求が送信されたときに一重引用符がエスケープされているように見えます。

let owner : String = "[email protected]" 

func getDeploymentsByOwner(token: String, owner: String, success: @escaping (JSON) -> Void, failure: @escaping (Error) -> Void) { 

    let headers = [ 
     "Authorization": "Bearer \(token)", 
     ] 
    print(owner) 


    let url = "https://corp.local?$filter=owners/ref eq '\(owner)'" 


    // created URL is https://corp.local?$filter=owners/ref eq '[email protected]' 


    Alamofire.request(url, method: .get, encoding: URLEncoding.queryString, headers: headers).responseJSON { (responseObject) -> Void in 
     if responseObject.result.isSuccess { 
      let resJSON = JSON(responseObject.result.value!) 
      success(resJSON) 
     } 
     if responseObject.result.isFailure { 
      let error = responseObject.result.error 
      print(error) 
      failure(error!) 
     } 
    } 

私のエラーメッセージがこの // Xocdeのデバッグエラー

Optional(Alamofire.AFError.invalidURL("https//:corp.local?$filter=owners/ref eq \'[email protected]\'")) 
invalidURL(https://corp.local?$filter=owners/ref eq \'[email protected]\'") 

私は$フィルターなしですべてのアイテムを得ることができますように見えますので、リクエストがあれば、フィルタが省略されているように動作します。

//ポストマンは、生成されたURLで動作しますが、バックスラッシュと1()ではない

+0

URLをエンコードしようとします –

+0

フィードバックをいただきありがとうございます。どのようにエンコードしますか? – TryingToMakeItWork

+0

あなたはこれを解決することができますか? –

答えて

1

ご確認くださいます

let url = "https//:corp.local?$filter=owners/ref eq \'[email protected]\'" 
let urlEncoded = url.addingPercentEncoding(withAllowedCharacters: .urlHostAllowed) 
print(urlEncoded!) 
1

は、残念ながら、それは動作しませんでした、ご回答いただきありがとうございます。ホスト名を含むURL全体が乱雑になりました。しかし、それは私にそれを把握する出発点を与えた、ありがとう。作業コードは以下の通りです

let url = "https://corp.local?$filter=owners/ref eq '\(owner)'" 
    let encodedUrl = url.addingPercentEncoding(withAllowedCharacters: .urlQueryAllowed)