使用PHP的GET和POST实现iOS的http网络通信


本内容用于完成一个小功能,iOS客户端发送名字字符,服务器接收这个名字,然后在iOS客户端异步通信把服务器返回的内容显示出来。首先介绍几个知识点:

使用GET网络通信

PHP中何时使用 GET?

通过 GET 方法从表单发送的信息对任何人都是可见的(所有变量名和值都显示在 URL 中)。GET 对所发送信息的数量也有限制。限制在大于 2000 个字符。不过,由于变量显示在 URL 中,把页面添加到书签中也更为方便。

GET 可用于发送非敏感的数据。

PHP服务器端的代码

<?php
$result= $_GET["name"];
$arr = array(
    'name'=>"returned name is".$result,
);
$json = json_encode($arr);

echo $json;
功能十分简单,接收客户端发送的“name”返回json格式的数组;

服务器端的代码 

    NSString *text = [NSString stringWithFormat:@"http://localhost:63342/test/welcome_get.php?<span style="color:#ff0000;">name=%@",self.nameTextField.text</span>];
    NSURL *url = [NSURL URLWithString:text];
    NSLog(@"%@",url);
    NSURLRequest *request = [NSURLRequest requestWithURL:url];
    [NSURLConnection sendAsynchronousRequest:request queue:<span style="color:#ff0000;">[NSOperationQueue mainQueue]</span>   completionHandler:^(NSURLResponse *response, NSData *data, NSError *connectionError) {
        NSLog(@"%@",response);
                      if (data) {
                          dispatch_async(dispatch_get_main_queue(), ^{
                              
                              NSDictionary *json = [NSJSONSerialization JSONObjectWithData:data options:NSJSONReadingMutableContainers error:nil];
                              
                              NSString *text = json[@"name"];
                              
                              self.textView.text = text;
                          });
                      }
                  }];
将UI里的nameTextField的文字发给前面的服务器,然后解析jsondata,并在textView中显示键值为name的返回值;需要注意的是由于此处传输的信息量很小我是用了mainQueue,这容易阻塞进程,不过此处可以。
最后结果如下:


使用POST实现网络通信

何时使用 POST?

通过 POST 方法从表单发送的信息对其他人是不可见的(所有名称/值会被嵌入 HTTP 请求的主体中),并且对所发送信息的数量也无限制

此外 POST 支持高阶功能,比如在向服务器上传文件时进行 multi-part 二进制输入。

不过,由于变量未显示在 URL 中,也就无法将页面添加到书签。

提示:开发者偏爱 POST 来发送表单数据。


PHP代码改为 POST:
<?php
$result= $_POST["name"];
$arr = array(
    'name'=>"returned name is   ".$result,
);
$json = json_encode($arr);

echo $json;

OC代码改为:

    NSMutableURLRequest *request = [<span style="color:#ff6666;">NSMutableURLRequest</span> requestWithURL:[NSURL URLWithString:@"http://localhost:63342/test/welcome_get.php"]];
    request.HTTPMethod = @"POST";
    request.HTTPBody = [[NSString stringWithFormat:@"name=%@",self.nameTextField.text] dataUsingEncoding:NSUTF8StringEncoding ];
    [NSURLConnection sendAsynchronousRequest:request queue:[NSOperationQueue mainQueue] completionHandler:^(NSURLResponse *response, NSData *data, NSError *connectionError) {
        if (data) {
            
            NSDictionary *json = [NSJSONSerialization JSONObjectWithData:data options:0 error:nil];
            NSLog(@"%@",json);
            NSString *text = json[@"name"];
此处使用httpmethod和httpbody来进行设置,并使用UTF-8编码。
运行结果是一样的。







  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值