2014-10-13 5 views
0

Я полный новичок в концепции серверного сервера, подключенного к приложению iOS, но подумал, что должен знать еще об этом. Я создал функцию ниже с помощью некоторых обучающих программ в Интернете. Однако, когда это выполняется, я продолжаю получать сообщение об ошибке (500, хотя, если я тестирую один и тот же URL с моим webapp, он работает). Кто-нибудь знает, что вызывает это?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]; 

можно упростить, что просто:

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

Вы также инициировании как NSURLConnection, так как запрос AFNetworking. Я бы выбрал один или другой (AFNetworking, вероятно, будет проще). Таким образом, устранить строку, которая говорит:

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

Относительно того, почему вы получаете код 500 статуса, мы не имеем достаточно информации, чтобы диагностировать это. Вы можете попытаться контролировать успешное соединение через Charles, а затем сравнить это с тем, что вы видите, когда Чарльз контролирует ваше приложение, пытающееся использовать одно и то же соединение.

Но у нас недостаточно информации для диагностики того, что именно требуется/ожидает ваш веб-сервис.

+0

Не может ли это быть JSON? Я добавил его к вопросу. – user4114789

+0

Нет, это что-то еще, вероятно, результат того, как формируется запрос. Но мы не знаем, как должен выглядеть запрос для вашего конкретного сервера, поэтому нам трудно сказать. – Rob

+0

Я добавил код с сервера на мой вопрос, так как я начинаю отчаянно пытаться решить эту проблему. – user4114789

Смежные вопросы