2016-07-25 12 views
0

Alamofireを使用してSwiftで実行する必要がある次のcurlコマンドがあります。AlamofireでCURLコマンドを実行しました

curl -k -i -d '{ "user": {"displayName":"My Test" ,"email":"[email protected]","pwd":"test","roles":["stu"]}}' -H "Content-Type: application/json;charset=UTF-8" -u web:web -X POST 'https://test.herokuapp.com/xtest/auth/register' 

Alamofireを使用してSwiftで次の方法を試しました。私は、私がウェブを誤っていると感じていますが、私はそれを確認する手段がありません。 は、コンソールが私に私は理解していない、次のエラーを与える:

print response object 
    nil 
print error 
    Optional(Error Domain=NSCocoaErrorDomain Code=3840 "Invalid value around character 0." UserInfo={NSDebugDescription=Invalid value around character 0.}) 

誰かがここで間違っているものを指摘することはできますか?どうも。

これは私が次のようにこの関数を呼び出すスウィフト

func registerNewStudent(displayName: String, email: String, password: String, completionHandler: (AnyObject?, NSError?) ->()) { 

//Basic HTTP auth 
    let user = "web" 
    let password = "web" 

    let credentialData = "\(user):\(password)".dataUsingEncoding(NSUTF8StringEncoding)! 
    let base64Credentials = credentialData.base64EncodedStringWithOptions([]) 

    let headers = ["Authorization": "Basic \(base64Credentials)"] 

//example for a nested array query 
    let parameters = [ 
     "user": [ 
      "displayName": displayName, 
      "email": email, 
      "pwd": password, 
      "roles":["stu"] 
     ] 
    ] 

    Alamofire.request(
     .POST, 
     registerURL, 
     headers: headers, 
     parameters: parameters 
     ) 
     .responseJSON { response in 
      switch response.result { 
      case .Success(let value): 
       completionHandler(value, nil) 
      case .Failure(let error): 
       completionHandler(nil, error) 
      } 
    } 
} 

にCURLコマンドを変換する機能である:

func okButtonTapped(sender: UIButton) { 

    let displayNameText = displayNameInput.text 
    let emailText = emailInput.text 
    let passwordText = passwordInput.text 

    restApi.registerNewStudent(displayNameText!,emailInput: emailText!, passwordInput: passwordText!) {responseObject, error in 
     // use responseObject and error here 

     print("print response object") 
     print(responseObject) 
     print("print error") 
     print(error) 
    } 

CURLコールからの応答:

{"result":{"email":"[email protected]","display_name":"My Test","pwd":"test","fb_id":null,"roles":["stu"] 

答えて

0

ここから解決できます:http://www.ceus-now.com/curl-d-to-alamofire/

JSON応答の後に次の行を追加すると、トリック(以前ではない)が実行されました。

Alamofire.request(
     .POST, 
     registerURL, 
     parameters: parameters 
     ) 
     .responseJSON { response in 
      switch response.result { 
      case .Success(let value): 
       completionHandler(value, nil) 
      case .Failure(let error): 
       completionHandler(nil, error) 
      } 
    } 
    .authenticate(user: "web", password: "web") 
} 

.authenticate(user: "web", password: "web") 

ので、この方法は次のようになります

関連する問題