NSMutableURLRequest的解释:setHTTPMethod

时间:2014-06-10 21:05:23

标签: php mysql objective-c xcode post

我是客观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`,它运行得非常好。)

我的问题是:

  • 当你可以调用你的php代码为你处理POST时,在你的代码中包含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];

1 个答案:

答案 0 :(得分:2)

NSMutableURLRequest创建一个将发送到URL的HTTP请求。

每个HTTP请求都必须有一个“方法”,可以是以下之一:

  • GET
  • HEAD
  • POST
  • PUT
  • DELETE
  • TRACE
  • OPTIONS
  • CONNECT
  • PATCH

GET是默认值,如果您没有指定任何内容,将使用它。几乎所有的HTTP请求都是GET。它旨在从服务器获取数据时使用。

POST几乎是唯一常用的其他方法,它是在将数据发送到服务器时使用的。

使用POST的主要原因是禁用缓存。如果您将GET请求发送到同一个URL两次,有时第二个请求将不会向服务器发送任何内容,它将只响应发回的第一个响应。

这种缓存可以在请求的任何阶段完成,例如大多数Web浏览器都会这样做,而且一些ISP也会这样做。最后一个是最大的问题,因为它只会发生在与这些ISP之一的用户身上。它也可以由服务器完成,例如我的PHP代码通常会将GET响应保存到磁盘,并在下次请求同一URL访问我的PHP脚本时返回该文件的内容,从而显着减少服务器负载。我没有为POST请求执行此操作。

因此,如果您希望将请求明确发送到服务器,则应始终将请求方法设置为POST。