2014-10-13 6 views
0

저는 iOS 앱에 연결된 서버 백엔드 개념에 대해 완전히 안다.하지만 좀 더 알아야한다고 생각했습니다. 나는 아래의 함수를 인터넷상의 튜토리얼을 통해 만들었다. 그러나이 실행될 때 오류 메시지 (500, 내 webapp 작동 함께 동일한 URL을 테스트 할 때 eventhough 계속) 점점. 아무도이 원인을 알고 있습니까?NSMutableUrlRequest가 계속 실패합니다

- (void)loadNinjas { 

    NSURLRequest *request = [NSURLRequest requestWithURL: 
         [NSURL URLWithString:@"http://www.load.com/ninjas"]]; 

    NSMutableURLRequest *mutableRequest = [request mutableCopy]; 
    [mutableRequest addValue:_xAuthToken forHTTPHeaderField:@"X-Auth-Token"]; 

    request = [mutableRequest copy]; 

    [[NSURLConnection alloc] initWithRequest:request delegate:self]; 

    AFHTTPRequestOperation *operation = [[AFHTTPRequestOperation alloc] initWithRequest:request]; 
    operation.responseSerializer = [AFJSONResponseSerializer serializer]; 

    [operation setCompletionBlockWithSuccess:^(AFHTTPRequestOperation *operation, id responseObject) { 

     NSArray *jsonArray = (NSArray *)responseObject; 

     NSMutableArray *tempNinjas = [[NSMutableArray alloc] init]; 

     for (NSDictionary *dic in jsonArray) { 
      Ninja *ninja = [[Ninja alloc] initWithDictionary:dic]; 
      [tempNinjas addObject:ninja]; 
     } 


     self.ninjas = [[NSArray alloc] initWithArray:tempNinjas]; 
     tempNinjas = nil; 

     [self.tableView reloadData]; 

    } failure:^(AFHTTPRequestOperation *operation, NSError *error) { 

     UIAlertView *alertView = [[UIAlertView alloc] initWithTitle:@"Error Retrieving Services" 
                  message:[error localizedDescription] 
                  delegate:nil 
                cancelButtonTitle:@"Ok" 
                otherButtonTitles:nil]; 
     [alertView show]; 
    }]; 

    [operation start]; 
} 

그리고 이것은 페치 JSON의 예이다 :

{ 
    "data" : [ 
     { 
      "name" : "test1", 
      "text" : "test1test1" 
     }, 
     { 
      "name" : "test2", 
      "text" : "test2test2", 
     }, 
     { 
      "name" : "test3", 
      "text" : "test3test3", 
     } 
    ] 
} 

요청은 Laravel 경로로 진행 :

Route::group(['before' => 'auth.token'], function() 
{ 

    Route::resource('ninjas', 'ApiController'); 

}); 

그리고 이것은 호출 함수이다

public function index() 
{ 

    $payload = Request::header('X-Auth-Token'); 

    $check = AuthToken::validate($payload); 

    $userid = $check['id']; 

    $ninjas = DB::table('ninjas') 
       ->where('userid','=', $userid) 
       ->get(); 

    return $this->respond([ 

     'data' => $this->NinjasTransformer->transformCollection($ninjas) 

    ]); 

} 

답변

0

다음과 같은 행이 있습니다.

NSURLRequest *request = [NSURLRequest requestWithURL:[NSURL URLWithString:@"http://www.load.com/ninjas"]]; 

NSMutableURLRequest *mutableRequest = [request mutableCopy]; 
[mutableRequest addValue:_xAuthToken forHTTPHeaderField:@"X-Auth-Token"]; 

request = [mutableRequest copy]; 

당신은 해당를 단순화 할 수 있습니다 : 당신은 또한 AFNetworking 요청뿐만 아니라 모두 NSURLConnection을 시작하는

NSURLRequest *request = [NSMutableURLRequest requestWithURL:[NSURL URLWithString:@"http://www.load.com/ninjas"]]; 
[request addValue:_xAuthToken forHTTPHeaderField:@"X-Auth-Token"]; 

. 나는 하나 또는 다른 것을 선택할 것이다 (AFNetworking은 아마 더 쉬울 것이다). 그러므로 다음 줄을 제거하십시오 :

[[NSURLConnection alloc] initWithRequest:request delegate:self]; 

500 개의 상태 코드를받는 이유에 관해서는 진단하기에 충분한 정보가 없습니다. Charles을 통해 성공적인 연결을 모니터링 한 다음 Charles가 동일한 연결을 시도하는 것을 모니터링 할 때와 비교해 볼 수 있습니다.

그러나 우리는 귀하의 웹 서비스가 필요로하거나 기대하는 바를 진단하기위한 충분한 정보가 없습니다.

+0

JSON이 가져올 수 있습니까? 나는 그것을 질문에 추가했다. – user4114789

+0

아니요, 다른 것입니다. 아마 요청이 어떻게 형성되었는지 알 수 있습니다. 그러나 우리는 요청이 특정 서버에서 어떻게 보이는지 알지 못하기 때문에 우리가 말하기가 어렵습니다. – Rob

+0

나는이 문제를 해결하기 위해 절박 해지기 시작했기 때문에 서버의 코드를 내 질문에 추가했습니다. – user4114789

관련 문제