2016-06-06 2 views
3

나는이 자습서를 따라 왔습니다. https://devdactic.com/parse-json-with-swift/ 그리고 모든 지시 사항을 그대로 따라야합니다. 하지만 내 api 서비스가 요청 된 매개 변수를 가져올 수없는 것처럼 나는 단지 HTTP 게시물 요청을 작동시키지 못했습니다. 가입 컨트롤러에서 호출 다음SwiftyJSON을 사용하여 게시물 요청을하는 방법

func registerNewUser(email: String,url: String, onCompletion: (JSON) -> Void) { 

     let route = baseURL + url 

     print(route) 

     let postItems:[String: String] = ["email": email] 
     print("postitems",postItems) 



     makeHTTPPostRequest(route, body: postItems, onCompletion: { json, err in 

      onCompletion(json as JSON) 

      print("response",json) 

     }) 

    } 

:

func requestSignUp() 
    { 
     if((emailField.text?.isEmpty) == false) 
     { 
     //performSegueWithIdentifier("showVerification", sender: signUpBtn) 

      let url = "user/signup" 
      RestApiManager.sharedInstance.registerNewUser(emailField.text! as String, url: url as String, onCompletion: { 
       (json: JSON) in if let results = json[0].array { 
        for entry in results { 

         print(entry) 

        } 
       } 
      }) 

     } 
    } 

인쇄가 표시

private func makeHTTPPostRequest(path: String, body: [String: AnyObject], onCompletion: ServiceResponse) { 
     let request = NSMutableURLRequest(URL: NSURL(string: path)!) 

     // Set the method to POST 
     request.HTTPMethod = "POST" 

     do { 
      // Set the POST body for the request 
      let jsonBody = try NSJSONSerialization.dataWithJSONObject(body, options: .PrettyPrinted) 

      request.HTTPBody = jsonBody 
      let session = NSURLSession.sharedSession() 

      let task = session.dataTaskWithRequest(request, completionHandler: {data, response, error -> Void in 
       if let jsonData = data { 
        let json:JSON = JSON(data: jsonData) 

        onCompletion(json, nil) 

       } else { 

        onCompletion(nil, error) 
       } 

      }) 
      task.resume() 

     } catch { 
      // Create your personal error 
      onCompletion(nil, nil) 
     } 
    } 

다음 내가 그것을 호출하는 함수를 만들었습니다 그래서 내 httppost 요청 방법 등록 사용자의 게시물 항목 형식은 다음과 같습니다.

postitems [ "em 괴롭히다 ":":

response { 
    "responseData" : { 

    }, 
    "responseStat" : { 
    "status" : false, 
    "isLogin" : false, 
    "requestError" : [ 

    ], 
    "msg" : "The email field is required.", 
    "extra" : { 

    } 
    } 
} 

이메일 필드 매개 변수가 이메일하고 성공적인 제출에 이런 식으로 뭔가 보여줄 것 :

{ 
    "responseStat": { 
    "status": true, 
    "isLogin": false, 
    "msg": "Successfully Registered an, your password has been sent to your email", 
    "requestError": [], 
    "extra": {} 
    }, 
    "responseData": "" 
} 
을 dasdsd은 "]

그리고 내 서비스 응답이 표시

답변

3

이 라인을 내 에 추가합니다 .HTTPPostRequest이 (가) 만들었습니다.

request.setValue("application/json; charset=utf-8", forHTTPHeaderField: "Content-Type") 
+0

당신은 좋은 선생님이 생명의 은인이다! 고맙습니다! – Jakub

0

당신은 용이성과 SwiftyJSON 함께 Alamofire를 사용할 수 있습니다

static func requestToSendObject(value: YOUROBJECT) { 
    let url = NSURL(string: "http://google.com")! 
    let params: [String: AnyObject] = [ 
     "object_key" : value 
    ] 
    Alamofire.request(.POST, url, parameters: params, encoding: .JSON, headers: nil).responseJSON { 
     if let data = response.result.value { 
      let responseJSON = JSON(data) 
      // Use the responseJSON 
     } 
    } 
}