2014-07-19 2 views
1

json 문자열을 반환하는 localhost API (iOS 신속 응용 프로그램과 함께 빌드해야 함)에 연결하려고합니다. API는 Laravel 4 프레임 워크로 작성되었습니다.코코아 오류 3840 작업을 완료 할 수 없습니다.

func checkEmail() { 
    var request = NSMutableURLRequest(URL: NSURL(string: "http://localhost:3306/laravel/rojectapi/checkEmail")) 
    var session = NSURLSession.sharedSession() 

    request.HTTPMethod = "POST" 

    var params = ["email":"[email protected]", "password":"password"] as Dictionary 

    var err: NSError? 
    request.HTTPBody = NSJSONSerialization.dataWithJSONObject(params, options: nil, error: &err) 
    request.addValue("application/json", forHTTPHeaderField: "Content-Type") 
    request.addValue("application/json", forHTTPHeaderField: "Accept") 

    var task = session.dataTaskWithRequest(request, completionHandler: {data, response, error -> Void in 
     println("Response: \(response)") 
     var strData = NSString(data: data, encoding: NSUTF8StringEncoding) 
     println("Body: \(strData)") 
     var err: NSError? 
     var json = NSJSONSerialization.JSONObjectWithData(data, options: .MutableLeaves, error: &err) as NSDictionary 

     println("hey") 

     if(err) { 
      println(err!.localizedDescription) 
     } 
     else { 
      var success = json["success"] as? Int 
      println("Success: \(success)") 
     } 
     }) 

    task.resume() 

} 

Laravel PHP 경로 : 여기서

은 연결 코드를 수신하는 아이폰 OS 스위프트 코드

: 다음
Route::post('/checkEmail', array(
'as' => 'checkEmail', 
'uses' => '[email protected]' 
)); 

그리고 위해 checkEmail 법 프런트 엔드 컨트롤러

public function checkEmail() { 

    $validator = Validator::make(Input::all(), array(
     'email' => 'required|unique:users|email' 
    )); 

    if($validator->fails()) { 
     return $validator->messages()->toJson(); 
    } else { 
     return Response::json(array('success' => true)); 
    } 

} 

서버에 올바르게 연결되지 않았습니까? 에뮬레이터뿐 아니라 내 랩톱에 연결된 iPhone 5에서도이 작업을 수행해야합니다. URL에 name.local, localhost:<post> 및 을 시도했습니다.

업데이트

나는 (스위프트의 .AllowFragments) NSJSONReadingAllowFragments을 통과 this tutorial

+0

디버거에 기록 된'strData'의 내용을 게시하십시오. – duci9y

답변

3

하나의 코드를 가지고 또는 제대로 JSON 포맷합니다.

간단한 google 검색 결과에 따르면 잘못된 형식의 JSON이 iOS JSON 파서에 전달되어 오류 3840이 발생했다.

+0

네, 게시하기 전에 그 봤어요. 그러나 내가 개발을 거의 새로운 것으로 받아들이면 그것을 어떻게 고쳐야할지 모른다. NSJSONReadingAllowFragments를 JSON에 어떻게 전달할 수 있습니까? –

+0

@josh 당신이'.MutableLeaves'를 통과 한 것처럼. – duci9y

+0

'.AllowFragments'를'.MutableLeaves' 대신에'.AllowFragments'를 따로 전달했지만 작동하지 않습니다. 난 여전히 같은 오류가 발생합니다 –

0

API가 사용자로부터 일부 데이터를 필요로하고 API를 보내지 못하거나 APi에서 수신하지 못하는 경우 API에 의해 수신 된 매개 변수를 반향하려고 시도하는 경우 발생합니다. iOS 요청, 웹 콘솔에서이 오류를 볼 수는 있지만 APi 구현에 오류가있는 경우에도 발생할 수 있습니다.

0

프로젝트의 언어를 언어에 추가 할 때이 오류가 발생합니다. 언어를 추가 할 때 "지역화 할 수있는 문자열"에서 "인터페이스 빌더 스토리 보드"로 변경해야합니다. iOS 앱 프로젝트를 의미합니다. 너를 도울 수있어.

관련 문제