ios中的http:get,post,同步,异步
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了ios中的http:get,post,同步,异步,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含7325字,纯文字阅读大概需要11分钟。
内容图文
一、服务端
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 { publicvoid 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+",用户名密码有误!!"); } } publicvoid 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
原文:http://www.cnblogs.com/edisonfeng/p/3830224.html
内容总结
以上是互联网集市为您收集整理的ios中的http:get,post,同步,异步全部内容,希望文章能够帮你解决ios中的http:get,post,同步,异步所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。