转自:http://www.cnblogs.com/edisonfeng/p/3830224.html

一、服务端

  1、主要结构:

   

  2、主要代码:

    1)web.xml

<?xml version="1.0" encoding="UTF-8"?>
<web-app version="2.5"
xmlns="http://java.sun.com/xml/ns/javaee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/javaee
http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd">
<welcome-file-list>
<welcome-file>index.jsp</welcome-file>
</welcome-file-list>
<servlet>
<servlet-name>LoginServlet</servlet-name><!--lsdkalskdfjasdkfj-->
<servlet-class>com.wiscom.servlet.LoginServlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>LoginServlet</servlet-name>
<url-pattern>/LoginServlet</url-pattern>
</servlet-mapping>
</web-app>

    2)LoginServlet.java

package com.wiscom.servlet;

import java.io.IOException;
import java.io.PrintWriter; import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse; public class LoginServlet extends HttpServlet { public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
// TODO Auto-generated method stub
response.setContentType("text/html;charset=utf-8"); request.setCharacterEncoding("utf-8");//设置参数解码类型,必须和页面中一致
String sName=request.getParameter("name");
String sPassword=request.getParameter("psw"); PrintWriter out = response.getWriter();
if(sName.equals("admin")&&sPassword.equals("admin")){
out.print(sName+",您已成功登陆!!");
}else{
out.print(sName+",用户名密码有误!!");
}
} public void doPost(HttpServletRequest request, HttpServletResponse response)throws ServletException, IOException {
this.doGet(request, response);
}
}

二、客户端

  1、头文件:NetCenter.h

#import <Foundation/Foundation.h>

@interface NetCenter : NSObject

@property(nonatomic,retain) NSMutableData *receiveData;

@property(nonatomic,assign)int dataPackSerialNo;

- (void)httpGetSyn;

- (void)httpPostSyn;

- (void)httpGetNoSyn;

- (void)httpPostNoSyn;

@end

  2、实现文件:NetCenter.m

#import "NetCenter.h"

@implementation NetCenter

@synthesize receiveData=_receiveData;
@synthesize dataPackSerialNo=_dataPackSerialNo; - (void)httpGetSyn
{
NSLog(@"httpGetSyn..."); /*
NSString *urlString =url;
NSMutableURLRequest *request = [[NSMutableURLRequest alloc] init];
[request setURL:[NSURL URLWithString:urlString]];
[request setHTTPMethod:@"GET"];
NSHTTPURLResponse* urlResponse = nil;
NSError *error = [[NSError alloc] init];
NSData *responseData = [NSURLConnection sendSynchronousRequest:request returningResponse:&urlResponse error:&error];
NSMutableString *result = [[NSMutableString alloc] initWithData:responseData encoding:NSUTF8StringEncoding];
NSLog(@"The result string is :%@",result);
*/
//第一步,创建URL
NSURL *url = [NSURL URLWithString:@"http://10.0.0.96:8080/app_server/LoginServlet?name=admin&psw=admin"]; //第二步,通过URL创建网络请求
NSURLRequest *request = [[NSURLRequest alloc]initWithURL:url cachePolicy:NSURLRequestUseProtocolCachePolicy timeoutInterval:10];
//NSURLRequest初始化方法第一个参数:请求访问路径,第二个参数:缓存协议,第三个参数:网络请求超时时间(秒)
/*
其中缓存协议是个枚举类型包含:
NSURLRequestUseProtocolCachePolicy(基础策略)
NSURLRequestReloadIgnoringLocalCacheData(忽略本地缓存)
NSURLRequestReturnCacheDataElseLoad(首先使用缓存,如果没有本地缓存,才从原地址下载)
NSURLRequestReturnCacheDataDontLoad(使用本地缓存,从不下载,如果本地没有缓存,则请求失败,此策略多用于离线操作)
NSURLRequestReloadIgnoringLocalAndRemoteCacheData(无视任何缓存策略,无论是本地的还是远程的,总是从原地址重新下载)
NSURLRequestReloadRevalidatingCacheData(如果本地缓存是有效的则不下载,其他任何情况都从原地址重新下载)
*/
//第三步,连接服务器
NSData *received = [NSURLConnection sendSynchronousRequest:request returningResponse:nil error:nil];
NSString *str = [[NSString alloc]initWithData:received encoding:NSUTF8StringEncoding]; NSLog(@"%@",str); } - (void)httpPostSyn
{
NSLog(@"httpPostSyn..."); //第一步,创建URL
NSURL *url = [NSURL URLWithString:@"http://10.0.0.96:8080/app_server/LoginServlet"]; //第二步,创建请求
NSString *postStr = [[NSString alloc] initWithFormat:@"name=%@&psw=%@",@"admin",@"admin"];
NSData *postData = [postStr dataUsingEncoding:NSUTF8StringEncoding];
NSMutableURLRequest *request = [[NSMutableURLRequest alloc]initWithURL:url cachePolicy:NSURLRequestUseProtocolCachePolicy timeoutInterval:10];
[request setHTTPMethod:@"POST"];//设置请求方式为POST,默认为GET
[request setHTTPBody:postData];//设置参数 //第三步,连接服务器
NSData *received = [NSURLConnection sendSynchronousRequest:request returningResponse:nil error:nil];
NSString *backStr = [[NSString alloc]initWithData:received encoding:NSUTF8StringEncoding]; NSLog(@"%@",backStr);
} - (void)httpGetNoSyn
{
NSLog(@"httpGetNoSyn..."); //第一步,创建url
NSURL *url = [NSURL URLWithString:@"http://10.0.0.96:8080/app_server/LoginServlet?name=admin&psw=admin"]; //第二步,创建请求
NSURLRequest *request = [[NSURLRequest alloc]initWithURL:url cachePolicy:NSURLRequestUseProtocolCachePolicy timeoutInterval:10]; //第三步,连接服务器
NSURLConnection *connection = [[NSURLConnection alloc]initWithRequest:request delegate:self]; } - (void)httpPostNoSyn
{
NSLog(@"httpPostNoSyn..."); //第一步,创建url
NSURL *url = [NSURL URLWithString:@"http://10.0.0.96:8080/app_server/LoginServlet"]; //第二步,创建请求
NSString *postStr = [[NSString alloc] initWithFormat:@"name=%@&psw=%@",@"admin",@"admin"];
NSData *postData = [postStr dataUsingEncoding:NSUTF8StringEncoding];
NSMutableURLRequest *request = [[NSMutableURLRequest alloc]initWithURL:url cachePolicy:NSURLRequestUseProtocolCachePolicy timeoutInterval:10];
[request setHTTPMethod:@"POST"];
[request setHTTPBody:postData]; //第三步,连接服务器
NSURLConnection *connection = [[NSURLConnection alloc]initWithRequest:request delegate:self];
} /*************5、异步请求的代理方法[start]****************/ //接收到服务器回应的时候调用此方法
- (void)connection:(NSURLConnection *)connection didReceiveResponse:(NSURLResponse *)response
{
NSHTTPURLResponse *res = (NSHTTPURLResponse *)response;
NSLog(@"%@",[res allHeaderFields]);
self.receiveData = [NSMutableData data];//数据存储对象的的初始化
self.dataPackSerialNo=0;
NSLog(@"收到服务器回应。。。");
} //接收到服务器传输数据的时候调用,此方法根据数据大小执行若干次
-(void)connection:(NSURLConnection *)connection didReceiveData:(NSData *)data
{
NSLog(@"收到服务器传回的数据包,数据包序号:%d",self.dataPackSerialNo);
[self.receiveData appendData:data];
self.dataPackSerialNo+=1;
} //数据传完之后调用此方法
-(void)connectionDidFinishLoading:(NSURLConnection *)connection
{
NSLog(@"数据传输完成,输出所有数据结果。。。");
NSString *receiveStr = [[NSString alloc]initWithData:self.receiveData encoding:NSUTF8StringEncoding];
NSLog(@"%@",receiveStr);
} //网络请求过程中,出现任何错误(断网,连接超时等)会进入此方法
-(void)connection:(NSURLConnection *)connection
didFailWithError:(NSError *)error
{
NSLog(@"网络请求出错:%@",[error localizedDescription]);
} /*************5、异步请求的代理方法[end]****************/ @end

  3、调用

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
self.window = [[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]]; NetCenter *netCenter=[[NetCenter alloc]init]; /*****************同步请求****************/
//[netCenter httpGetSyn];
//[netCenter httpPostSyn]; /*****************异步请求****************/
//[netCenter httpGetNoSyn];
[netCenter httpPostNoSyn]; self.window.backgroundColor = [UIColor whiteColor];
[self.window makeKeyAndVisible];
return YES;
}  

三、测试

  1、同步get

  

  2、同步post

  

  3、异步get

  

  4、异步post

  

三、扩展

  1、http和https

    http://www.cnblogs.com/stan0714/archive/2012/03/21/2409872.html

  2、ios网络编程理论与实例

    http://blog.csdn.net/hgy2011/article/details/8676084

最新文章

  1. 浅析MySQL复制
  2. BZOJ1500[NOI2005]维修数列
  3. WCF学习之旅——第一个WCF示例(二)
  4. python操作mongodb数据库
  5. const关键字也许该被替换为readonly
  6. 学习Jquery
  7. 多余的Using Namespaces或引用会影响程序的执行效率么?
  8. Radiobutton编辑
  9. (十一)学习CSS之float属性
  10. java基础程序设计学习
  11. Android开发——自动生成Android屏幕适配的dimens.xml文件
  12. 细说UI线程和Windows消息队列(经典)
  13. 漂亮竖向菜单 有缓存 javascript
  14. 开发中少不了的Fun -- 获取地址栏URL参数
  15. bootstrap 前端模板
  16. gsoap内存管理与释放
  17. SQL 报表 --简易进销系统
  18. illumina phix
  19. pageadmin CMS网站制作教程:
  20. HTML5新增的几个容器模块

热门文章

  1. kafka数据清理
  2. c++ 中vector 常见用法(给初学者)
  3. [bzoj4553]序列
  4. form-create 3.0 版本发布,好用的Vue3版本动态表单生成组件
  5. 使用bootstrap-table时导出excel开头的0被自动省略
  6. P&#243;lya 定理学习笔记
  7. Codeforces 1175F - The Number of Subpermutations(线段树+单调栈+双针/分治+启发式优化)
  8. 洛谷 P5470 - [NOI2019] 序列(反悔贪心)
  9. Codeforces 538G - Berserk Robot(乱搞)
  10. Perl语言入门10-13