iOS上的AWS API网关
问题描述:
我正在使用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];
答
我看到两个问题,您的API网关接入。
你的终点可能不被设置为处理
POST
请求。您的网址会从GET
请求中返回数据。我将POST
更改为GET
,我可以获取JSON数据。当所请求的端点不存在时,“Missing Authentication Token”消息也是一个通用消息。-
返回的JSON格式错误。检查语法。我发布了我从URL中收到的JSON字典。它在经线上缺少一个逗号。
{ "Stops" : [ { "id" : "1", "latitude" : "300", "longitude": "400" "name" : "Test Stop 2" } ] }
答
ApiGateway可以自动生成SDK的适用于iOS,Android和JavaScript的。虽然这不能回答你的问题,但使用自动生成的SDK将(可能)为你解决问题。
建议补充说,“缺少身份验证令牌”消息是用于对上述请求端点不存在,以及一个通用的消息(你的第一个子弹的情况下)。 –
@AndrewTempleton完成:) – Daniel
Upvoted雅,很好的回答 –