ios使用objective-c保存带有GET请求的json
Posted
技术标签:
【中文标题】ios使用objective-c保存带有GET请求的json【英文标题】:ios save json with GET request using objective-c 【发布时间】:2016-11-19 19:10:16 【问题描述】:我已经尝试过 *** 的大部分建议,但没有一个对我有好处。
我的客户想用 GET 请求格式将用户数据保存在 json 中:
http://website.com/users/save.php?save="email":"user@domen.com","name":"Will Smith"
我正在使用objective-c 请指教 谢谢
编辑
我的 php 文件如下所示:
<?php
$save = $_GET['save'];
$fp = fopen("save_users_ww.txt", "a+");
fputs($fp,$save."\r\n");
fclose($fp);
?>
所以帖子不适合我。再次感谢您的帮助
【问题讨论】:
Vicor 作为初学者,请尽可能解释您的问题。我认为您要求将数据从应用程序发布到服务器。如果是,那么请创建一个发布请求并在服务器上发送数据。查看以下链接raywenderlich.com/67081/cookbook-using-nsurlsession***.com/questions/19099448/…***.com/questions/34327919/…developer.apple.com/reference/foundation/urlsession 您的问题含糊不清。你是说你想通过 GET 请求从服务器下载数据,然后在本地保存该数据?或者您是说您有想要发送到服务器的数据?您的 URL 看起来像是在尝试将 JSON 直接放入 URL 中。你不能那样做。您可以使用查询字符串来设置少量的键值对,但不能以这种方式传递 JSON 有效负载。如果您要将数据发送到您希望使用 POST 而不是 GET 的服务器。 亲爱的 Duncan C,是的,我正在尝试将 json 数据上传到服务器,实际上是 txt 文件。我也很困惑。我添加了 php 文件,如果我只是在 Web 浏览器中打开链接,效果很好,但是在 objectve-c 中应该如何完成呢?谢谢 【参考方案1】:如果其他人需要解决方案,这是我的代码:
.h 文件:
@interface WelcomeViewController : UIViewController <NSURLConnectionDelegate>
NSMutableData *_responseData;
.m 文件:
-(void)postToDataBaseWithName:(NSString*)nameToPost andEmail:(NSString*)emailToPost
NSString *str = [NSString stringWithFormat:@"http://website.com/users/save.php?save=\"email\":\"%@\",\"name\":\"%@\"", emailToPost, nameToPost];
str = [str stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding];
NSURL *url = [NSURL URLWithString:str];
NSURLRequest *request = [NSURLRequest requestWithURL:url];
// Create url connection and fire request
NSURLConnection *conn = [[NSURLConnection alloc] initWithRequest:request delegate:self];
if(conn)
还可以添加委托方法以查看其工作原理:
#pragma mark NSURLConnection Delegate Methods
- (void)connection:(NSURLConnection *)connection didReceiveResponse:(NSURLResponse *)response
// A response has been received, this is where we initialize the instance var you created
// so that we can append data to it in the didReceiveData method
// Furthermore, this method is called each time there is a redirect so reinitializing it
// also serves to clear it
NSLog(@"didReceiveResponse");
_responseData = [[NSMutableData alloc] init];
- (void)connection:(NSURLConnection *)connection didReceiveData:(NSData *)data
// Append the new data to the instance variable you declared
NSLog(@"didReceiveData");
[_responseData appendData:data];
- (NSCachedURLResponse *)connection:(NSURLConnection *)connection
willCacheResponse:(NSCachedURLResponse*)cachedResponse
// Return nil to indicate not necessary to store a cached response for this connection
return nil;
- (void)connectionDidFinishLoading:(NSURLConnection *)connection
// The request is complete and data has been received
// You can parse the stuff in your instance variable now
NSLog(@"connectionDidFinishLoading");
- (void)connection:(NSURLConnection *)connection didFailWithError:(NSError *)error
// The request has failed for some reason!
// Check the error var
NSLog(@"didFailWithError = %@", error);
【讨论】:
以上是关于ios使用objective-c保存带有GET请求的json的主要内容,如果未能解决你的问题,请参考以下文章
AFNetworking 3.0 GET 请求在 iOS 中保存到类中
带有 WebServer 的 Objective-C 套接字
如何发送带有 HTTP HEADERS 的 PUT 请求和带有 Objective-C 的 FILE?