/* * And now, the actual GSXMLRPC class. */@implementation GSXMLRPC- (NSData*) buildMethod: (NSString*)method params: (NSArray*)params{ return [[self buildMethodCall: method params: params] dataUsingEncoding: NSUTF8StringEncoding];}- (NSString*) buildMethodCall: (NSString*)method params: (NSArray*)params{ NSMutableString *str = [NSMutableString stringWithCapacity: 1024]; unsigned c = [params count]; unsigned i; if ([method length] == 0) { return nil; } else { static NSCharacterSet *illegal = nil; NSRange r; if (illegal == nil) { NSMutableCharacterSet *tmp = [NSMutableCharacterSet new]; [tmp addCharactersInRange: NSMakeRange('0', 10)]; [tmp addCharactersInRange: NSMakeRange('a', 26)]; [tmp addCharactersInRange: NSMakeRange('A', 26)]; [tmp addCharactersInString: @"_.:/"]; [tmp invert]; illegal = [tmp copy]; RELEASE(tmp); } r = [method rangeOfCharacterFromSet: illegal]; if (r.length > 0) { return nil; // Bad method name. } } [str appendString: @"<?xml version='"1.0'"?>'n"]; [str appendString: @"<methodCall>"]; NL; INDENT(1); [str appendFormat: @"<methodName>%@</methodName>", [method stringByEscapingXML]]; NL; if (c > 0) { INDENT(1); [str appendString: @"<params>"]; NL; for (i = 0; i < c; i++) { INDENT(2); [str appendString: @"<param>"]; NL; INDENT(3); [str appendString: @"<value>"]; NL; [[params objectAtIndex: i] appendToXMLRPC: str indent: 3 for: self]; NL; INDENT(3); [str appendString: @"</value>"]; NL; INDENT(2); [str appendString: @"</param>"]; NL; } INDENT(1); [str appendString: @"</params>"]; NL; } [str appendString: @"</methodCall>"]; NL; return str;}http://www.google.com/codesearch?hl=en&q=NSURLConnection+initWithRequest+show:thO0Gy4XKz8:WITO_lYqkRQ:OGAQEqv7aks&sa=N&cd=3&ct=rc&cs_p=ftp://ftp.gnustep.org/pub/daily-snapshots/core.current.tar.bz2&cs_f=core/base/Source/Additions/GSXML.m
コメント一覧
この記事にコメントしてください
(*) は必須入力項目です。