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?

在文件名中保存带有斜线的文件-objective-c

带有 iOS 应用和 Objective-C 代码的 Parse.com

在 iOS 上使用 Parse BaaS:我应该使用 PFFile 来保存原始类型和 Objective-C 类吗?