2016-08-19 5 views
0

Я использую NSURL для подключения к моему API-шлюзу, и ответ, который я получаю, когда на моем устройстве iOS находится «Отсутствует токен аутентификации». Я проверил, что я развернул свой API. Он доступен и возвращает полностью заполненный json через Chrome и Safari с использованием того же URL-адреса.AWS API Gateway на iOS

Мой код:

NSString* urlString = [NSString stringWithFormat:@"https://csjm26qn0c.execute-api.us-east-1.amazonaws.com/dev/truckstopsregion1/1"]; 
NSURL *url = [NSURL URLWithString: urlString]; 
NSMutableURLRequest *request = [NSMutableURLRequest requestWithURL:[url standardizedURL]]; 

[request setHTTPMethod:@"POST"]; 
[request setValue:@"application/json" forHTTPHeaderField:@"Content-Type"]; 
[request addValue:@"...NOT GOING TO SHOW..." forHTTPHeaderField:@"API-Key"]; 


NSURLSession* session = [NSURLSession sharedSession]; 
NSURLSessionDataTask* task = [session dataTaskWithRequest:request completionHandler:^(NSData * _Nullable data, NSURLResponse * _Nullable response, NSError * _Nullable error) { 
    if(error == nil && data != nil){ 

     NSArray *jsonArray = [NSJSONSerialization JSONObjectWithData:data options:kNilOptions error:&error]; 

    } 
}]; 

[task resume]; 

ответ

1

Я вижу две проблемы с доступом шлюза API.

  1. Ваша конечная точка не может быть настроена для обработки POST запроса. Ваш URL-адрес возвращает данные из запроса GET. Я меняю POST на GET, и я могу получить данные JSON. Сообщение «Missing Authentication Token» также является общим сообщением, когда запрашиваемая конечная точка не существует.

  2. Возвращенный JSON является искаженным. Проверьте синтаксис. Я опубликовал словарь JSON, который получил от вашего URL. На линии долготы отсутствует запятая.

    { 
        "Stops" : 
        [ 
         { 
          "id"  : "1", 
          "latitude" : "300", 
          "longitude": "400" 
          "name"  : "Test Stop 2" 
         } 
        ] 
    } 
    
+0

предположить, добавив, что сообщение «Missing Authentication Знак» является родовым сообщение, когда запрашиваемая конечная точка не существует, а (случай вашей первой пули). –

+1

@AndrewTempleton Done :) – Daniel

+0

Упрощенный ya, хороший ответ –

1

ApiGateway может автоматически генерировать SDK для IOS, Android и JavaScript. Хотя это не отвечает на ваш вопрос, использование автоматически сгенерированного SDK (возможно) решит проблему для вас.

Посмотрите на документацию здесь: http://docs.aws.amazon.com/apigateway/latest/developerguide/how-to-generate-sdk.html#how-to-generate-sdk-console

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