2017-12-21 107 views
0

AlamoFire를 사용하여 JSON을 내 웹 서비스에 게시하면 게시물이 성공적으로 작동하고 값이 데이터베이스에 전송되지만 AlamoFire가 NSURLErrorDomain을 반환하면 내 '제출 실패' 메시지. 아래 코드에서 내가 뭘 잘못하고 있니?AlamoFire POST가 작동하지만 NSURLErrorDomain 오류가 반환됩니다.

//AlamoFire POST 
    var request = URLRequest(url: NSURL.init(string: URL)! as URL) 
    request.httpMethod = "POST" 
    request.setValue("application/json", forHTTPHeaderField: "Content-Type") 
    request.timeoutInterval = 10 // secs 
    request.httpBody = try! JSONSerialization.data(withJSONObject: myJson, options: []) 

    Alamofire.request(request).responseJSON { 
     (response) in 
     log.info("HTTP RESPONSE: \(response.result)") 
     if response.result.isSuccess { 
      self.alertControllerMsg(msgStyle: UIAlertControllerStyle.alert,msgTitle: "Success", msgBody: "Update Delivered", cancelLbl: "", actionLbl: "Dismiss", complete: { 
       self.view.endEditing(true)      
       self.activityIndicator.stopAnimating() 
       self.sendBtn.isEnabled = true 
      }) 
     } else if response.result.isFailure { 
      let error : Error = response.result.error! 
      log.error(error) 
      self.alertControllerMsg(msgStyle: UIAlertControllerStyle.alert,msgTitle: "Error", msgBody: "Update Failed. Please try again.", cancelLbl: "", actionLbl: "Dismiss", complete: { 
       self.activityIndicator.stopAnimating() 
       self.sendBtn.isEnabled = true 
      }) 
     } 
    } 

편집 :

Error Domain=NSURLErrorDomain Code=-1001 "The request timed out." UserInfo={NSUnderlyingError=0x170643540 {Error Domain=kCFErrorDomainCFNetwork Code=-1001 "(null)" UserInfo={_kCFStreamErrorCodeKey=-2102, _kCFStreamErrorDomainKey=4}}, NSErrorFailingURLStringKey=http://{{URL.REDACTED}}/odata/Updates, NSErrorFailingURLKey=http://{{URL.REDACTED}}/odata/Updates, _kCFStreamErrorDomainKey=4, _kCFStreamErrorCodeKey=-2102, NSLocalizedDescription=The request timed out.} 
+0

다른 사람이 무슨 일이 일어나고 있는지 분석하려면 오류를 게시해야합니다. –

+0

@SanthoshR 전체 오류 메시지가 추가되었습니다 – Nate23VT

+0

이 스레드에서 모든 솔루션을 사용해 보았습니다. https://stackoverflow.com/questions/41803856/set-timeout-in-alamofire – Nate23VT

답변

0

내가 알아 낸 문제가 서버 측에서 실제로 것을 다음은 전체 오류 메시지입니다. 웹 서비스는 HTTP BODY 외에도 URL 매개 변수를 수신하고있었습니다. Alamofire는이 매개 변수를 URL에 추가한다는 것을 좋아하지 않았습니다. 유사한 호출이 Fiddler에서는 작동하지만 Alamofire에서는 작동하지 않기 때문에 인코딩 된 방식이어야합니다. 쿼리 문자열 매개 변수를 제거하기 위해 웹 서비스를 다시 작업 할 계획입니다.