我是客观c编程的新手。我目前正在尝试将数据插入到mysql数据库中。我已经阅读了这方面的几个链接,但找不到我想要的确切答案。
以下是我要做的事情:
我有我的应用程序,用户在文本字段中输入一个名称,一旦按下添加按钮,它就连接到我的php文件,我的php文件完成其余工作(使用POST方法)并添加命名为mysql数据库。
我见过很多人使用我的代码中包含的NSMutableURLRequest : setHTTPMethod :POST`` in their code (in my case my php file does that and I don't have
NSMutableURLRequest`,它运行得非常好。)
我的问题是:
NSMutableURLRequest
有什么好处吗?NSMutableURLRequest
到底做了什么以及哪种方式更有效?这是重新解释我的问题:
使用以下NSMutableRequest方法连接到php文件会更好:
NSString *loginString =[NSString stringWithFormat:@"fn_checkLogin2.php?name=%@&pass=%@", self.email.text, self.password.text];
NSURL *url = [NSURL URLWithString:@"http://www.myworkingdomain.com/"];
NSMutableURLRequest *urlRequest = [NSMutableURLRequest requestWithURL:url ];
[urlRequest setTimeoutInterval:30.0f];
[urlRequest setHTTPMethod:@"POST"];
[urlRequest setHTTPBody:[loginString dataUsingEncoding:NSUTF8StringEncoding]];
NSOperationQueue *queue= [[NSOperationQueue alloc] init];
[NSURLConnection sendAsynchronousRequest:urlRequest queue:queue completionHandler:^(NSURLResponse *response, NSData *data, NSError *error){
if ([data length]>0 && error==nil) {
NSString *html = [[NSString alloc] initWithData:data encoding:NSUTF8StringEncoding];
NSLog(@"HTML = %@",html);
}
}
];
或者这样:
NSString *strURL = [NSString stringWithFormat:@"http://www.myworkingdomain.com/fn_checkLogin2.php?name=%@&pass=%@", self.email.text, self.password.text];
// to execute php code
NSData *dataURL = [NSData dataWithContentsOfURL:[NSURL URLWithString:strURL]];
// to receive the returend value
NSString *strResult = [[[NSString alloc] initWithData:dataURL encoding:NSUTF8StringEncoding]autorelease];
答案 0 :(得分:2)
NSMutableURLRequest
创建一个将发送到URL的HTTP请求。
每个HTTP请求都必须有一个“方法”,可以是以下之一:
GET是默认值,如果您没有指定任何内容,将使用它。几乎所有的HTTP请求都是GET。它旨在从服务器获取数据时使用。
POST几乎是唯一常用的其他方法,它是在将数据发送到服务器时使用的。
使用POST的主要原因是禁用缓存。如果您将GET请求发送到同一个URL两次,有时第二个请求将不会向服务器发送任何内容,它将只响应发回的第一个响应。
这种缓存可以在请求的任何阶段完成,例如大多数Web浏览器都会这样做,而且一些ISP也会这样做。最后一个是最大的问题,因为它只会发生在与这些ISP之一的用户身上。它也可以由服务器完成,例如我的PHP代码通常会将GET响应保存到磁盘,并在下次请求同一URL访问我的PHP脚本时返回该文件的内容,从而显着减少服务器负载。我没有为POST请求执行此操作。
因此,如果您希望将请求明确发送到服务器,则应始终将请求方法设置为POST。