Iphone HTTP请求工具类

在项目中我封装了个http请求的工具类,因为项目中只用到post请求,所以get请求的方法只是刚开始试了下,行得通,不知到有没有错误,代码如下:

h文件:

#import <Foundation/Foundation.h>

/*
 *自定义http代理
 */
@protocol MyhttpUitlDelegate <NSObject>
-(void) setServicereturnData:(NSString*)servicedata;
@end

@interface MyHTTPUtil : NSObject<NSXMLParserDelegate> {
    NSMutableData *webData;//异步请求返回回来的数据
    
    id<MyhttpUitlDelegate> myhttputildelegate;
    NSString *dialogcanshow;//防止快速两次请求以上弹出多个等待对话筐
    
    //等待对话筐
    UIAlertView *mt;
}

@property(nonatomic,retain)id<MyhttpUitlDelegate> myhttputildelegate;
@property(nonatomic,retain)UIAlertView *mt;
@property(nonatomic,retain) NSString *dialogcanshow;//防止快速两次请求以上弹出多个等待对话筐

+(NSString *)httpForTongbuGET:(NSString *)urlstring;
+(NSString *)httpForTongbuPOST:(NSString *)urlstring addParms:(NSData *)urlparms;
//-(void)httpForYibuPOST:(NSString *)urlstring addParms:(NSString *)urlparms;
-(void)httpForYibuPOSTForData:(NSString *)urlstring addParms:(NSData *)urlparms;
-(void)httpForYibuGET:(NSString *)urlstring addParms:(NSString *)urlparms;
-(void)httpForYibuPOSTPageparms:(NSString *)urlstring addParms:(NSData *)pageparms;
-(void)showwaitalertview;

@end

m文件

#import "MyHTTPUtil.h"
#import "FileUtils.h"

@implementation MyHTTPUtil
//url公用部分
//NSString *baseurl = @"http://192.168.0.63:8080/mbtravel/";
//NSString *baseurl = @"http://192.168.0.63:8081/mbtr/";
NSString *baseurl = @"http://192.168.128.1:8080/mbtravel/";
NSInteger PagingRows = 5;//每页的行数
@synthesize myhttputildelegate;
@synthesize dialogcanshow;
@synthesize mt;

-(void)dealloc{
	[myhttputildelegate release];
    [dialogcanshow release];
    [mt release];
	[super dealloc];
}

-(id)init{
    self.dialogcanshow = @"false";
   return  [super init];
}

//http的同步get请求,返回服务器返回的数据
+(NSString *)httpForTongbuGET:(NSString *)urlstring{
    NSString *allurl = [NSString stringWithFormat:@"%@%@",baseurl,urlstring];
    NSURL* url = [NSURL URLWithString:allurl];  
    
    NSMutableURLRequest* request = [[[NSMutableURLRequest alloc]init]autorelease]; 
    [request setURL:url];  
    [request setHTTPMethod:@"GET"]; 
    NSString *contentType = [NSString stringWithFormat:@"text/xml"];//@"application/json" 
    [request addValue:contentType forHTTPHeaderField:@"Content-Type"];
    NSHTTPURLResponse *urlResponese = nil;
    NSError *error = [[NSError alloc]init];
    NSData* data = [NSURLConnection sendSynchronousRequest:request   returningResponse:&urlResponese error:&error]; 
    NSString* result= [[NSString alloc] initWithData:data encoding:NSUTF8StringEncoding];
    if([urlResponese statusCode] >=200&&[urlResponese statusCode]<300){
        
        return result;
    }
    return nil;
    [error release];
    [result release];
}


//异步get请求
-(void)httpForYibuGET:(NSString *)urlstring addParms:(NSString *)urlparms{
    //    if ([ValueUtils caseEquals:self.dialogcanshow to:@"true"]){
    //        [self showwaitalertview];//弹出等待对话筐
    //    }
    //    
    NSString *allurl = [NSString stringWithFormat:@"%@%@%@",baseurl,urlstring,urlparms];
    NSLog(@"%@",allurl);
    NSURL *url = [NSURL URLWithString:allurl];                           
    NSMutableURLRequest *theRequest = [NSMutableURLRequest requestWithURL:url cachePolicy:NSURLRequestReloadIgnoringCacheData timeoutInterval:15];  
    
    [theRequest addValue: @"text/xml; charset=utf-8" forHTTPHeaderField:@"Content-Type"];
    //[theRequest setTimeoutInterval:15];//设置了也是无效
    [theRequest setHTTPMethod:@"GET"]; 
    NSURLConnection *theConnection = [[NSURLConnection alloc] initWithRequest:theRequest delegate:self startImmediately:YES];
    
    if(theConnection) {
        webData = [[NSMutableData data] retain];
        
    }
}
//
异步post请求,带参数
//
//-(void)httpForYibuPOST:(NSString *)urlstring addParms:(NSString *)urlparms{
    if ([ValueUtils caseEquals:self.dialogcanshow to:@"true"]) {
        [self showwaitalertview];//弹出等待对话筐
    }
//    
//    NSString *allurl = [NSString stringWithFormat:@"%@%@%@",baseurl,urlstring,urlparms];
//          //NSStringEncoding  enc=CFStringConvertEncodingToNSStringEncoding(kCFStringEncodingGB_18030_2000);   //转换编码,包括中文
//   // NSString *allurl2=[allurl stringByAddingPercentEscapesUsingEncoding:enc];
//   NSString *allurl2= [allurl stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding];
//    NSLog(@"url===%@",allurl2);
//    NSURL *url = [NSURL URLWithString:allurl2];   
//    NSMutableURLRequest *theRequest = [NSMutableURLRequest requestWithURL:url cachePolicy:NSURLRequestReloadIgnoringCacheData timeoutInterval:15];  
//    [theRequest  setValue:@"zh-cn" forHTTPHeaderField:@"Accept-Language"];
//    	[theRequest  setValue:@"gzip, deflate" forHTTPHeaderField:@"Accept-Encoding"];
//    [theRequest addValue: @"application/x-www-form-urlencoded;charset=UTF-8" forHTTPHeaderField:@"Content-Type"];
//    //[theRequest setTimeoutInterval:15];//设置了也是无效
//    [theRequest setHTTPMethod:@"POST"]; 
//    NSURLConnection *theConnection = [[NSURLConnection alloc] initWithRequest:theRequest delegate:self startImmediately:YES];
//    
//    
//    if(theConnection) {
//        webData = [[NSMutableData data] retain];
//        
//    }
//}



//基本上只用下面这三个方法


//http的同步post请求,返回服务器返回的数据
+(NSString *)httpForTongbuPOST:(NSString *)urlstring addParms:(NSData *)urlparms{
    NSString *allurl = [NSString stringWithFormat:@"%@%@",baseurl,urlstring];
    NSURL* url = [NSURL URLWithString:allurl];  
    NSMutableURLRequest* request = [[[NSMutableURLRequest alloc]init]autorelease]; 
    [request setURL:url];  
    [request setHTTPMethod:@"POST"]; 
    [request  setValue:@"zh-cn" forHTTPHeaderField:@"Accept-Language"];
    [request  setValue:@"gzip, deflate" forHTTPHeaderField:@"Accept-Encoding"];
    [request addValue: @"application/x-www-form-urlencoded;charset=UTF-8" forHTTPHeaderField:@"Content-Type"];
   // [request addValue: @"text/xml; charset=utf-8" forHTTPHeaderField:@"Content-Type"];//写这句而不是上面那句,就会出错
     [request setHTTPBody:urlparms];  
    NSHTTPURLResponse *urlResponese = nil;
    NSError *error = [[NSError alloc]init];
    NSData* data = [NSURLConnection sendSynchronousRequest:request   returningResponse:&urlResponese error:&error]; 
    NSString* result= [[NSString alloc] initWithData:data encoding:NSUTF8StringEncoding];
    if([urlResponese statusCode] >=200&&[urlResponese statusCode]<300){
        
        return result;
    }
    return nil;
    [error release];
    [result release];
}


//异步post请求,后面参数是nsdata类型,主要针对参数提交
-(void)httpForYibuPOSTForData:(NSString *)urlstring addParms:(NSData *)urlparms{
    NSString *allurl = [NSString stringWithFormat:@"%@%@",baseurl,urlstring];
    NSString *allurl2= [allurl stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding];
    NSURL *url = [NSURL URLWithString:allurl2];   
    NSMutableURLRequest *theRequest = [NSMutableURLRequest requestWithURL:url cachePolicy:NSURLRequestReloadIgnoringCacheData timeoutInterval:15];  
    [theRequest  setValue:@"zh-cn" forHTTPHeaderField:@"Accept-Language"];
    [theRequest  setValue:@"gzip, deflate" forHTTPHeaderField:@"Accept-Encoding"];
    [theRequest addValue: @"application/x-www-form-urlencoded;charset=UTF-8" forHTTPHeaderField:@"Content-Type"];
    [theRequest setHTTPMethod:@"POST"]; 
    [theRequest  setValue:[NSString stringWithFormat:@"%d",PagingRows] forHTTPHeaderField:@"PagingRows"];
    [theRequest setHTTPBody:urlparms];
    
    if ([ValueUtils caseEquals:self.dialogcanshow to:@"true"]){
        [self showwaitalertview];//弹出等待对话筐
    }
    
    NSURLConnection *theConnection = [[NSURLConnection alloc] initWithRequest:theRequest delegate:self startImmediately:YES];
    
    if(theConnection) {
        webData = [[NSMutableData data] retain];
        
    }

}

//异步post请求,主要针对分页查询
-(void)httpForYibuPOSTPageparms:(NSString *)urlstring addParms:(NSData *)pageparms{
    //    if ([ValueUtils caseEquals:self.dialogcanshow to:@"true"]) {
    //        [self showwaitalertview];//弹出等待对话筐
    //    }
    
    NSString *allurl = [NSString stringWithFormat:@"%@%@",baseurl,urlstring];
    NSString *allurl2= [allurl stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding];
    NSURL *url = [NSURL URLWithString:allurl2];   
    NSMutableURLRequest *theRequest = [NSMutableURLRequest requestWithURL:url cachePolicy:NSURLRequestReloadIgnoringCacheData timeoutInterval:15];  
    [theRequest  setValue:@"zh-cn" forHTTPHeaderField:@"Accept-Language"];
    [theRequest  setValue:@"gzip, deflate" forHTTPHeaderField:@"Accept-Encoding"];
    [theRequest addValue: @"application/x-www-form-urlencoded;charset=UTF-8" forHTTPHeaderField:@"Content-Type"];
    [theRequest setHTTPMethod:@"POST"]; 
    [theRequest  setValue:[NSString stringWithFormat:@"%d",PagingRows] forHTTPHeaderField:@"PagingRows"];
    [theRequest setHTTPBody:pageparms];
    
    if ([ValueUtils caseEquals:self.dialogcanshow to:@"true"]){
        [self showwaitalertview];//弹出等待对话筐
    }
    
    NSURLConnection *theConnection = [[NSURLConnection alloc] initWithRequest:theRequest delegate:self startImmediately:YES];
    
    
    if(theConnection) {
        webData = [[NSMutableData data] retain];
        
    }
}

- (void)connection:(NSURLConnection *)connection didReceiveResponse:(NSURLResponse *)response {
	[webData setLength:0];
//    if ([ValueUtils caseEquals:self.dialogcanshow to:@"true"]){
//        [self showwaitalertview];//弹出等待对话筐
//    }
    
}

- (void)connection:(NSURLConnection *)connection didReceiveData:(NSData *)data {
	[webData appendData:data];
}

- (void)connection:(NSURLConnection *)connection didFailWithError:(NSError *)error {
    if (mt!=nil) {
      [mt dismissWithClickedButtonIndex:1 animated:YES];
    }
    [self performSelectorInBackground:@selector(showerroralertview) withObject:nil]; 
    //[mt dismissWithClickedButtonIndex:1 animated:YES];
}

- (void)connectionDidFinishLoading:(NSURLConnection *)connection {
    if (mt!=nil) {
        [mt dismissWithClickedButtonIndex:1 animated:YES];
    }
	[connection release];
    
    NSString* result= [[NSString alloc] initWithData:webData encoding:NSUTF8StringEncoding];
    [self.myhttputildelegate setServicereturnData:result];//为页面设值
	[webData release];
    [result release];
}
//弹出error对话筐
-(void)showerroralertview{
    UIAlertView *erroralert = [[UIAlertView alloc]initWithTitle:@"提示" message:@"请求数据失败" delegate:self cancelButtonTitle:nil otherButtonTitles:@"确定", nil];
    [erroralert show];
    [erroralert release];
    
}

//弹出等待对话筐
-(void)showwaitalertview{
    mt = [[UIAlertView alloc]initWithTitle:nil message:@"正在加载......" delegate:self cancelButtonTitle:nil otherButtonTitles:nil, nil];
    [mt show];
   

}



@end



  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值