NSXMLParser XML 解析 解压
来源:互联网 发布:jdk1.6 for linux 编辑:程序博客网 时间:2024/05/21 09:12
#import "Http.h"@interface Http ()@end@implementation Http@synthesize requestAddr;@synthesize loginJudge;-(id)initWithRequestStyle:(HTTPREQUESTTYPE)type paramArray:(NSDictionary*)params{ paramDict = params; finished = NO; //[self switchHttpUrlRequest:type]; self.requestAddr = [self switchHttpUrlRequest:type]; return self;}//url拼接与判断-(NSString *)switchHttpUrlRequest:(HTTPREQUESTTYPE)type { NSMutableString *addr = [[[NSMutableString alloc]initWithString:@"http:XXXXXXXXXXXX"]autorelease]; ViewController *viewcontroller = [[ViewController alloc]init]; [viewcontroller autorelease]; switch (type) { case EPAYLOGIN: [addr appendFormat:@"getlogin?Account=%@&Password=%@%",[paramDict objectForKey:@"useName"] ,[paramDict objectForKey:@"usePwd"]]; break; default: break; } NSLog(@"addrHpptRequest:%@",addr); return addr;}-(void)requestAndconnect{ NSMutableURLRequest *request = [[[NSMutableURLRequest alloc]init] autorelease]; requestAddr = [requestAddr stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding]; NSLog(@"requestAddr%@",requestAddr); [request setURL:[NSURL URLWithString:requestAddr]]; [request setHTTPMethod:@"GET"]; [request setTimeoutInterval:10]; NSURLConnection *conn = [[[NSURLConnection alloc]initWithRequest:request delegate:self] autorelease]; if(conn) { receivedData = [[NSMutableData data] retain]; while(!finished) { timeout ++; NSLog(@"outtime:%d",timeout); if(timeout>5) { finished = YES; } [[NSRunLoop currentRunLoop] runMode:NSDefaultRunLoopMode beforeDate:[NSDate dateWithTimeIntervalSinceNow:1]]; } } else { NSLog(@"失败"); } }/*- (void)connection:(NSURLConnection *)connection didFailWithError:(NSError *)error{ finished = YES; //etrafficAppDelegate *app =[[UIApplication sharedApplication] delegate]; //app.moudle.netWorkComplite = NO; NSLog(@"connection error");}*/- (void)connection:(NSURLConnection *)connection didReceiveData:(NSData *)data { [receivedData appendData:data]; NSLog(@"receivedDate:%@",receivedData);} - (void)connectionDidFinishLoading:(NSURLConnection *)connection { EpayLogin *epayloginxml; switch (curType) { case EPAYLOGIN: NSLog(@"sssssss"); epayloginxml = [[EpayLogin alloc]initWithData:receivedData]; NSMutableArray *aa = [[NSMutableArray alloc]init]; aa = [epayloginxml beginParser]; NSDictionary *a = [[NSDictionary alloc]init]; a = [aa objectAtIndex:0]; NSLog(@"aaaaaaaaaa:%@",[aa objectAtIndex:0]); NSLog(@"aa%@",[a objectForKey:@"Transreturn"]); LoginJudge *test = [[LoginJudge alloc]init]; test.loginarray = aa; self.loginJudge =[test autorelease]; NSLog(@"retainCount:%d",[self.loginJudge retainCount]); NSLog(@"loginarray:%@",[self.loginJudge.loginarray objectAtIndex:0]); break; default: break; }}@end
@class LoginJudge;#import <UIKit/UIKit.h>#import <zlib.h>#import "ParserForMainReturn.h"#import "ViewController.h"#import "EpayLogin.h"#import "LoginJudge.h"enum _HttpRequestType{ EPAYLOGIN, };typedef NSUInteger HTTPREQUESTTYPE;@interface Http : NSObject{ NSMutableData *receivedData; NSDictionary *paramDict; BOOL finished; HTTPREQUESTTYPE curType; int timeout;}@property(nonatomic,retain)NSString *requestAddr;@property(nonatomic,retain)LoginJudge *loginJudge;-(id)initWithRequestStyle:(HTTPREQUESTTYPE)type paramArray:(NSDictionary*)params;-(NSString *)switchHttpUrlRequest:(HTTPREQUESTTYPE)type;-(void)requestAndconnect;@end
#import "ParserForMainReturn.h"#import "Utilities.h"#import "NSDataGZipAdditions.h"#import <zlib.h>@implementation ParserForMainReturn@synthesize data;-(id)initWithData:(NSData*)pdata { if (!(self=[super init])) return nil; if (self) { self.data = pdata; mStr = [[NSMutableString alloc]init ]; } return self;}-(NSData*)beginParser{ parser = [[NSXMLParser alloc] initWithData:data]; [parser setDelegate:self]; [parser setShouldProcessNamespaces:YES]; // The parser calls methods in this class [parser parse]; [parser release]; return mData;}- (void)parser:(NSXMLParser *)parser didStartElement:(NSString *)elementName namespaceURI:(NSString *)namespaceURI qualifiedName:(NSString *)qName attributes:(NSDictionary *)attributeDict{ if ([elementName isEqualToString:@"return"]) { mainElement = MRETURN; return; } mainElement = 99;}- (void)parser:(NSXMLParser *)parser foundCharacters:(NSString *)string{ switch (mainElement) { case MRETURN: [mStr appendFormat:@"%@",string ]; NSLog(@"mStr:%@",mStr); break; default: break; }}- (void)parser:(NSXMLParser *)parser didEndElement:(NSString *)elementName namespaceURI:(NSString *)namespaceURI qualifiedName:(NSString *)qName{ if ([elementName isEqualToString:@"return"]) { return; }}- (void)parserDidEndDocument:(NSXMLParser *)parser{ NSData *unBase64 = [Utilities base64toByte:mStr]; //NSData *unBase64 = [Utilities base64toByte: retStr]; NSLog(@"len %d",[unBase64 length]); if ([unBase64 length] == 0) { return; } //mData = [NSDataGZipAdditions dataWithCompressedBytes:[unBase64 bytes] length:[unBase64 length]]; mData = [self uncompressZippedData:unBase64]; NSLog(@"mData %@",[NSString stringWithUTF8String:[mData bytes]]); }-(NSData *)uncompressZippedData:(NSData *)compressedData { if ([compressedData length] == 0) return compressedData; unsigned full_length = [compressedData length]; unsigned half_length = [compressedData length] / 2; NSMutableData *decompressed = [NSMutableData dataWithLength: full_length + half_length]; BOOL done = NO; int status; z_stream strm; strm.next_in = (Bytef *)[compressedData bytes]; strm.avail_in = [compressedData length]; strm.total_out = 0; strm.zalloc = Z_NULL; strm.zfree = Z_NULL; if (inflateInit2(&strm, (15+32)) != Z_OK) return nil; while (!done) { // Make sure we have enough room and reset the lengths. if (strm.total_out >= [decompressed length]) { [decompressed increaseLengthBy: half_length]; } strm.next_out = [decompressed mutableBytes] + strm.total_out; strm.avail_out = [decompressed length] - strm.total_out; // Inflate another chunk. status = inflate (&strm, Z_SYNC_FLUSH); if (status == Z_STREAM_END) { done = YES; } else if (status != Z_OK) { break; } } if (inflateEnd (&strm) != Z_OK) return nil; // Set real length. if (done) { [decompressed setLength: strm.total_out]; NSLog(@"Y len:%lu",strm.total_out); return decompressed; //return [NSData dataWithData: decompressed]; } else { NSLog(@"no"); return nil; } } -(void)dealloc{ self.data = nil;// [countyList release]; [mStr release]; [super dealloc];}@end
#import <Foundation/Foundation.h>enum __mainElement { MRETURN };typedef NSUInteger _mainElement;@interface ParserForMainReturn : NSObject <NSXMLParserDelegate>{ NSData *data; NSXMLParser *parser; _mainElement mainElement; NSData *mData; NSMutableString *mStr;// NSMutableArray *mainList;// NSMutableDictionary *mainInfo;}@property(nonatomic,retain)NSData *data;-(id)initWithData:(NSData*)pdata ;-(NSData*)beginParser;-(NSData *)uncompressZippedData:(NSData *)compressedData ;@end
- NSXMLParser XML 解析 解压
- objective-c Http xml 文件解压 解析。NSXMLParser
- NSXMLParser解析xml
- NSXMLParser解析XML
- XML解析器 NSXMLParser
- NSXMLParser 解析 XML
- NSXMLParser类解析xml
- XML解析 NSXMLParser
- XML解析,NSXMLParser
- NSXMLParser解析xml格式
- NSXMLParser 解析 XML
- XML解析类NSXMLParser
- NSXMLParser 解析xml详解
- NSXMLParser解析XML数据
- iOS XML解析 - NSXMLParser
- nsxmlparser解析xml出错
- nsxmlparser解析xml出错
- NSXMLParser解析多层嵌套xml
- UISlider 滑动条基本属性
- objective-c 常用的一些控件。
- os x 一些常用命令
- Unix 下获得 root权限
- MAC OS X 系统终端的常用命令
- NSXMLParser XML 解析 解压
- UIActivityIndicatorView
- self = [super init]
- 受用的5句话
- Unix 文件查找命令
- 解决Xcode 代码颜色不显示
- ROWID的使用——快速删除表中重复的记录
- 关于 AppDelegate 、UIApplication 简单的用法
- contentSize、contentInset和contentOffset区别