Iphone HTTP请求工具类

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

#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  

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值