2017-08-04 3 views
0

私はスイフト3からリクエストを受け取りました。そのURLにはパイプラインがあります。パイプラインがなくてもうまく動作しますが、パイプラインを追加するとコードエラーが発生し、nilが見つかり、オプションの値のエラーが解消されます。ここでHttp取得リクエストURLは、迅速な3のパイプラインで構成されていますか?

は私のURL レットURLです= URL(文字列: "https://maps.googleapis.com/maps/api/directions/json?origin=colombo&destination=kandy&waypoints=optimize:true|&key=AIzaSyCNBcQLIVvNwqjkYiLawnYK_AM")ここで

は私のコードです:この出来事はなぜ

func synchronusGetRequstForExternalAPI(api_url:String, headers:[ String: String]) -> ResultModel { 

     let resultModel = ResultModel() 

     //create the url with URL 
     let url = URL(string:"https://maps.googleapis.com/maps/api/directions/json?origin=colombo&destination=kandy&waypoints=optimize:true|&key=AIzaSyCNBcQLIVvNwqjkYiLawnYK_OK4EQbRM5M") 
     //create the URLRequest object using the url object 
     var request = URLRequest(url: url!) 

     //set headers 
     for item in headers { 
      request.addValue(item.value, forHTTPHeaderField: item.key) 
     } 

     let semaphore = DispatchSemaphore(value: 0) 
     let task = URLSession.shared.dataTask(with: request as URLRequest) { 
      (data, response, error) in 


      if(error != nil){ 
       resultModel.ErrorType = .NO_INT 
       resultModel.JsonReslut = JSON.null 

      }else{ 

       if let resp = response as? HTTPURLResponse{ 
        if(resp.statusCode == 200){ 
         if let jsonResult = JSON(data) as? JSON { 

          resultModel.ErrorType = .NO_ERROR 
          resultModel.JsonReslut = jsonResult 
         } 
        }else{ 
         if let jsonResult = JSON(data) as? JSON { 

          resultModel.ErrorType = .SEREVR_ERROR 
          resultModel.JsonReslut = jsonResult 
         }else{ 
          resultModel.ErrorType = .SEREVR_ERROR 
          resultModel.JsonReslut = JSON.null 
         } 
        } 
       } 
      } 

      semaphore.signal() 
     } 
     task.resume() 
     _ = semaphore.wait(timeout: DispatchTime.distantFuture) 

     return resultModel 
    } 

誰も教えてもらえますか?

答えて

2

|はURLに許可されている文字ではありません。 URL文字列をパーセントでエスケープしようと試みてください。

let url = URL(string:"https://maps.googleapis.com/maps/api/directions/json?origin=colombo&destination=kandy&waypoints=optimize:true|&key=AIzaSyCNBcQLIVvNwqjkYiLawnYK_OK4EQbRM5M".stringByAddingPercentEncodingWithAllowedCharacters(NSCharacterSet.URLFragmentAllowedCharacterSet())) 
関連する問題