1. 云栖社区>
  2. PHP教程>
  3. 正文

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

作者:用户 来源:互联网 时间:2017-12-01 17:14:01

iosphppost网络通信http实现get使用

使用PHP的GET和POST实现iOS的http网络通信 - 摘要: 本文讲的是使用PHP的GET和POST实现iOS的http网络通信, 本内容用于完成一个小功能,iOS客户端发送名字字符,服务器接收这个名字,然后在iOS客户端异步通信把服务器返回的内容显示出来。首先介绍几个知识点:使用GET网络通信 PHP中何时使用 GET? 通过 GET 方法从表单发送的信息对任何人


本内容用于完成一个小功能,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?name=%@",self.nameTextField.text];
NSURL *url = [NSURL URLWithString:text];
NSLog(@"%@",url);
NSURLRequest *request = [NSURLRequest requestWithURL:url];
[NSURLConnection sendAsynchronousRequest:request queue:[NSOperationQueue mainQueue] 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 = [NSMutableURLRequest 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编码。
运行结果是一样的。

以上是云栖社区小编为您精心准备的的内容,在云栖社区的博客、问答、公众号、人物、课程等栏目也有的相关内容,欢迎继续使用右上角搜索按钮进行搜索ios , php , post , 网络通信 , http , 实现 , get 使用 ,以便于您获取更多的相关知识。