2016-08-19 139 views
0

我正在使用NSURL連接到我的API網關,而我在iOS設備上收到的響應是「缺少身份驗證令牌」。我檢查了我是否部署了我的API。它可以通過Chrome和Safari使用相同的URL訪問並返回完整填充的json。iOS上的AWS API網關

我的代碼:

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請求。您的網址會從GET請求中返回數據。我將POST更改爲GET,我可以獲取JSON數據。當所請求的端點不存在時,「Missing Authentication Token」消息也是一個通用消息。

  2. 返回的JSON格式錯誤。檢查語法。我發佈了我從URL中收到的JSON字典。它在經線上缺少一個逗號。

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

建議補充說,「缺少身份驗證令牌」消息是用於對上述請求端點不存在,以及一個通用的消息(你的第一個子彈的情況下)。 –

+1

@AndrewTempleton完成:) – Daniel

+0

Upvoted雅,很好的回答 –