码迷,mamicode.com
首页 > 移动开发 > 详细

IOS中POST和GET本地服务测试

时间:2015-02-09 02:01:04      阅读:241      评论:0      收藏:0      [点我收藏+]

标签:

首先,要了解get和post的概念,get和post都是访问服务器的方法,但使用还是有区别的。从字面意思上看,get是“取”的意思,post有“推送”之意,我们可以做个简单的PHP页面,放在根站点下(关于PHP+MySQL配置,以及Apache的配置本人就不在多讲了,大家问度娘即可,熟悉java的也可以用java+Apache tomcat的方法)下面是PHP源代码,大家可以拷贝,存储为.php文件即可(做get测试的时候,将代码中的POST改为GET即可)。

<?php
//定义常量
define(DB_HOST, ‘127.0.0.1‘);
define(DB_USER, ‘root‘);
define(DB_PASS, ‘123456‘);
define(DB_DATABASENAME, ‘itcast‘);
define(DB_TABLENAME, ‘userInfo‘);

//mysql_connect
$conn = mysql_connect(DB_HOST, DB_USER, DB_PASS) or die("链接数据库失败" . mysql_error());
mysql_select_db(DB_DATABASENAME, $conn);

$userName = $_POST[‘userName‘];
$userPwd  = $_POST[‘userPwd‘];

//根据提交的用户名和密码查询
$sql = sprintf("select * from %s where userName=‘%s‘ and userPwd=‘%s‘", DB_TABLENAME, $userName, $userPwd);
$result = mysql_query($sql, $conn);
//表格
$count = mysql_num_rows($result);

echo "用户名:".$_POST[‘userName‘].",密码:".$_POST[‘userPwd‘]."的记录有".$count."条<br/>";
mysql_free_result($result);
mysql_close($conn);

?>

假设,我们做了个PHP网页,命名为GetUserInfo.php,并放在跟站点之下,假设我要通过此页面访问我的数据库itcast中的table:userInfo,数据库截图如下:

技术分享

1、get:get方法是用于直接从服务器上取资源,我们在连接总,url形式为:http://localhost/GetUserInfo.php?userName=zhang&userPwd=1

2、post:通过数据体发送请求。url形式为:http://localhost/GetUserInfo.php.

两者的区别在于,get是直接获取数据,post需要包装数据体,塞给服务器才可以获取到数据,具体差异,请参见源代码:

#import "QZLViewController.h"

@interface QZLViewController ()
@property (weak, nonatomic) IBOutlet UITextField *userName;
@property (weak, nonatomic) IBOutlet UITextField *userPwd;
@property (weak, nonatomic) IBOutlet UILabel *stateLabel;

@end

@implementation QZLViewController

- (void)viewDidLoad
{
    [super viewDidLoad];
    //[self testGet];
}

- (IBAction)testGet {
    
    //1、创建一个url
    NSString *urlStr = [NSString stringWithFormat:@"http://localhost/GetUserInfo.php?userName=%@&userPwd=%@",self.userName.text,self.userPwd.text];
    
    NSURL *url = [NSURL URLWithString:urlStr];
    
    //2、定义一个请求
    NSURLRequest *request = [NSURLRequest requestWithURL:url];
    
    //3、发送异步网络请求
    [NSURLConnection sendAsynchronousRequest:request queue:[[NSOperationQueue alloc] init] completionHandler:^(NSURLResponse *response, NSData *data, NSError *connectionError) {
        
        //如果服务器连接正常,执行一下操作
        if (connectionError == nil)
        {
            //输出服务器返回的数据
            NSString *tempStr = [[NSString alloc] initWithData:data encoding:NSUTF8StringEncoding];
            NSLog(@"%@",tempStr);
            
            //设置登录状态(更新UI在主线程中进行)
            [[NSOperationQueue mainQueue] addOperationWithBlock:^{
                self.stateLabel.text = @"登陆完成";
            }];
        }
    }];

}
- (IBAction)testPost {
    //1、定义url串
    NSString *urlStr = @"http://localhost/GetUserInfo.php";
    NSURL *url = [NSURL URLWithString:urlStr];
    
    //2、定义可变请求
    NSMutableURLRequest *request = [NSMutableURLRequest requestWithURL:url];
    
    //3、设置请求方法
    request.HTTPMethod = @"POST";
    
    //4、设置数据体字符串
    NSString *requestStr = [NSString stringWithFormat:@"userName=%@&userPwd=%@",self.userName.text,self.userPwd.text];
    
    //5、将数据体字符串转化为二进制请求数据流
    NSData *requestData = [requestStr dataUsingEncoding:NSUTF8StringEncoding];
    request.HTTPBody = requestData;
    
    //6、发送网络请求
    [NSURLConnection sendAsynchronousRequest:request queue:[[NSOperationQueue alloc] init] completionHandler:^(NSURLResponse *response, NSData *data, NSError *connectionError) {
        
        if (connectionError == nil)
        {
            NSString *tempStr = [[NSString alloc] initWithData:data encoding:NSUTF8StringEncoding];
            NSLog(@"%@",tempStr);
            
            [[NSOperationQueue mainQueue] addOperationWithBlock:^{
                self.stateLabel.text = @"登陆完成";
            }];
        }
    }];
    
}

@end

执行post测试结果如下(要想搞清楚,请细读源代码,区分下两者的URL有何不同)

技术分享

IOS中POST和GET本地服务测试

标签:

原文地址:http://www.cnblogs.com/qian1988/p/4280758.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!