在 IOS 上使用 URL 将 JSON 发布到 API
Posted
技术标签:
【中文标题】在 IOS 上使用 URL 将 JSON 发布到 API【英文标题】:Posting JSON to API with URL on IOS 【发布时间】:2015-06-30 18:15:46 【问题描述】:我已经设计了一个闹钟,根据这个闹钟我需要在api上发布用户设置的闹钟,稍后api会处理这个过程并在闹钟时间到时通知我。所以基本上,我整天搜索并带着这些:
到目前为止,我付出了很多努力!请帮助我进一步..
NSMutableDictionary *alarmDic = [[NSMutableDictionary alloc] initWithCapacity:4];
NSLog(@"token: %@", self.token);
[alarmDic setObject:[NSNumber numberWithInteger:42] forKey:@"Token"];
NSLog(@"kur id: %lu", alarm.kurID);
[alarmDic setObject:[NSNumber numberWithInteger:alarm.kurID] forKey:@"CurrencyId"];
NSLog(@"not val: %f", alarm.kurAlis);
[alarmDic setObject:[NSNumber numberWithFloat:alarm.kurAlis] forKey:@"NotificationValue"];
NSLog(@"%ld", (long)alarm.kurTur);
[alarmDic setObject:[NSNumber numberWithInteger:alarm.kurTur] forKey:@"Type"];
NSData* jsonData = [NSJSONSerialization dataWithJSONObject:alarmDic
options:NSJSONWritingPrettyPrinted
error:nil];
NSLog(@"%@", [[NSString alloc] initWithData:jsonData
encoding:NSUTF8StringEncoding]);
NSString *dataLength = [NSString stringWithFormat:@"%lu", (unsigned long)[jsonData length]];
NSMutableURLRequest *request = [[NSMutableURLRequest alloc] init];
[request setURL:[NSURL URLWithString:@"http://api-dvzalt.azurewebsites.net/api/Notification/PostNotification"]];
[request setHTTPMethod:@"POST"];
[request setValue:dataLength forHTTPHeaderField:@"Content-Length"];
[request setHTTPBody:jsonData];
NSURLConnection *conn = [[NSURLConnection alloc] initWithRequest:request delegate:self];
if(conn)
NSLog(@"Connection Successful");
else
NSLog(@"Connection could not be made");
在日志窗口中,
requestReply: Connection Successful
但是,api 上没有发生任何事情,一如既往地说明这一点。
The requested resource does not support http method 'GET'.
这是我的困惑。它说连接成功,但在 API 上,还是一样。在这种情况下我该怎么办?我可能会跳过一些东西,但我不知道我跳过了什么。我已经完成了我想的所有步骤。
注意:API 运行良好,很可能与我的代码有关。
谢谢!
【问题讨论】:
【参考方案1】:所以我很好奇您的 Web 处理程序中是否没有 JSON 数据的字段名称?像“jsonData”这样的东西?现在您正在将 JSON 数据填充到您的正文中,但没有识别字段名称供处理程序将其拉出。
我在想这样的事情:
NSString jsonString = [[NSString alloc] initWithData:jsonData encoding:NSUTF8StringEncoding];
NSString requestString = [NSString stringWithFormat:@"jsonData=%@", jsonString];
然后对 requestString 进行编码并在你的 body 中使用它。
【讨论】:
所以我坚持了一件事。我应该把那个 requestString 放在哪里? HTTPBody,你的意思是 body 吗?它需要一个数据..以上是关于在 IOS 上使用 URL 将 JSON 发布到 API的主要内容,如果未能解决你的问题,请参考以下文章
iOS - 托管 JSON 文件以使用 URL 解析它 [关闭]
如何从从json获得的url加载图像到collectionview