IOS中POST和GET本地服务测试

首先,要了解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有何不同)

时间: 2024-10-11 08:05:38

IOS中POST和GET本地服务测试的相关文章

iOS中UIImage存为本地文件与UIImage转换为NSData

UIImage *[email protected]"XXX"; //png格式 NSData *imagedata=UIImagePNGRepresentation(image); //JEPG格式 //NSData *imagedata=UIImageJEPGRepresentation(image); NSArray*paths=NSSearchPathForDirectoriesInDomains(NSDocumentDirectory,NSUserDomainMask,YES

软件测试、ios中的测试概念以及步骤

软件测试: 软件测试的目标是应该服务于软件项目的目标,可以通过建议反馈使用更加高效的方法和工具,提升软件开发效率以及软件开发质量.同时还可以通过过一些手段,更早.更快.更多地发现缺陷,从容降低了这些缺陷带来的风险. 软件测试是为了消除更加多的bug,虽然没有能够消除彻底. 但是软件的质量不是通过软件测试,而是软件开发工程师决定的. 软件测试的好处: 1.测试可以对软件预防,然后反应给软件开发工程师,所以及时快速的找到错误. 2.对软件缺陷的检测. 软件测试的类型: 单元测试(Unit Tests

APP本地服务安全测试

一.安全测试基本分类: 1.系统安全 系统加固 安全加固:比如linux中关闭telnet端口,修改ssh端口 检测一些不必要的服务(需要卸载一个ping)--保证系统的最小集 app安全加固:加一层外壳 补丁 消息中间件:activityMQ,rabbitMQ,safMQ(关闭页面,非业务端口,默认用户) 防火墙规则(iptables) 防病毒 2.应用安全(安装包,服务,业务)----用户(人和服务)口令.敏感信息 (1)黑白名单(IP:port)----访问控制 (2)消息层面:数据加密和

IOS中NSUserDefaults的用法(轻量级本地数据存储)

iOS数据保存 IOS中NSUserDefaults的用法(轻量级本地数据存储) IOS中NSUserDefaults的用法(轻量级本地数据存储),布布扣,bubuko.com

绑定服务调用本地服务中的方法

如果想调用服务中的方法, 通过startService()是做不到的, 这时需要用bindService来解决. 下面的demo是在Activity中调用Service中的自定义方法---methodInService 这个demo可以解决在项目开发中调用service里的数据. 这里在service中使用到了代理模式.这是为了,给service组件和activity组件中间添加一个中间人. 通过代理来传递数据.也就是binder对象.这个代理就是接口IService Service中的代码如下

IOS中调用系统的电话、短信、邮件、浏览功能

iOS开发系列--通讯录.蓝牙.内购.GameCenter.iCloud.Passbook系统服务开发汇总 2015-01-13 09:16 by KenshinCui, 26990 阅读, 35 评论, 收藏, 编辑 --系统应用与系统服务 iOS开发过程中有时候难免会使用iOS内置的一些应用软件和服务,例如QQ通讯录.微信电话本会使用iOS的通讯录,一些第三方软件会在应用内发送短信等.今天将和大家一起学习如何使用系统应用.使用系统服务: 调用系统应用 使用系统服务目 录 短信与邮件 通讯录

Ios中常见的问题

__block和__weak修饰符的区别其实是挺明显的: 1.__block不管是ARC还是MRC模式下都可以使用,可以修饰对象,还可以修饰基本数据类型. 2.__weak只能在ARC模式下使用,也只能修饰对象(NSString),不能修饰基本数据类型(int). 3.__block对象可以在block中被重新赋值,__weak不可以. tableView 滑动卡的问题主要是因为:从缓存中或者是从本地读取图片给UIImage的时候耗费的时间.需要把下面的两句话放到子线程里面: NSData *i

iOS 中18个性能优化/内存优化常用方法(很常用)

1. 用ARC管理内存 ARC(Automatic ReferenceCounting, 自动引用计数),它避免了最常见的由于我们忘记释放内存所造成的内存泄露.它自动为你管理retain和release的过程,所以你就不必去手动管理了.编写代码的时候很容易忘掉结尾的release.而ARC会自动在底层为你做这些工作.除了帮你避免内存泄露,ARC还可以帮你提高性能,它能保证释放掉不再需要的对象的内存. 2. 在正确的地方使用 reuseIdentifier 一个开发中常见的错误就是没有给UITab

iOS开发网络篇—搭建本地服务器

iOS开发网络篇—搭建本地服务器 一.简单说明 说明:提前下载好相关软件,且安装目录最好安装在全英文路径下.如果路径有中文名,那么可能会出现一些莫名其妙的问题. 提示:提前准备好的软件 apache-tomcat-6.0.41.tar eclipse-jee-kepler-SR2-macosx-cocoa-x86_64.tar.gz jdk-8u5-macosx-x64.dmg 二.安装和配置本地服务器环境(java)步骤: (1)在文档路径下,新建一个文件夹(NetWord),解压eclips