作者 zzcghost
原帖地址 http://www.cocoachina.com/bbs/read.php?tid-13618.html
从一个gb2312 url 下载gb2312数据(获得电话区号 例子)
1.
2.
3. [seif getCityZipCode:北京]
4.
5. -(NSString*) getCityZipCode:(NSString*) city
6. {
7. NSData *tdata = nil;
8. NSURLResponse *response;
9. NSError *error;
10. NSString* strUrl;
11.
12. strUrl = [[NSString alloc] initWithFormat:
13. @"http://www.ip138.com/post/search.asp?area=%@&action=area2zone",city];
14.
15. NSStringEncoding enc = CFStringConvertEncodingToNSStringEncoding (kCFStringEncodingGB_18030_2000);
16. NSString *strUrld8 = [strUrl stringByAddingPercentEscapesUsingEncoding:enc];
17. NSURL * url = [[NSURL alloc] initWithString:strUrld8];
18.
19.
20. #if 0
21. NSString *xml = [NSString stringWithContentsOfURL:url encoding:enc error:&error];
22. if(xml == nil)
23. {
24. NSLog(@"Error reading url at %@", [error localizedFailureReason]);
25. }
26. #endif
27.
28. NSURLRequest *urlRequest = [[NSURLRequest alloc] initWithURL:url
29. cachePolicy:NSURLRequestReloadIgnoringLocalCacheData
30. timeoutInterval:60];
31. if(urlRequest == nil)
32. {
33. NSLog(@"Can not get %@",city);
34. return @"";
35. }
36.
37. // Make synchronous request
38. tdata = [NSURLConnection sendSynchronousRequest:urlRequest
39. returningResponse:&response
40. error:&error];
41. [urlRequest release];
42. urlRequest = nil;
43. if (tdata == nil)
44. {
45. NSLog(@"Can not get %@",city);
46. return @"";
47. }
48. else
49. {
50. NSString * tmp, *tmp1,*tmp2;
51. NSStringEncoding encT = CFStringConvertEncodingToNSStringEncoding (kCFStringEncodingGB_18030_2000);
52. NSString *string = [[NSString alloc] initWithData:tdata encoding: encT];
53. const char *pcchar = [string cStringUsingEncoding:NSUnicodeStringEncoding];
54. tmp = [NSString stringWithCharacters:(unichar*)pcchar length: [string lengthOfBytesUsingEncoding:NSUnicodeStringEncoding]];
55. [string release];
56.
57. NSArray * arr = nil;
58. arr = [tmp componentsSeparatedByString:@"区号:"];
59. if(arr)
60. {
61. if([arr count]>=2)
62. {
63. tmp1 = [arr objectAtIndex:1];
64. //NSLog(@"tmp1= %@", tmp1);
65. NSArray * arrss = [tmp1 componentsSeparatedByString:@"</td></tr><tr><td align="];
66. if(arrss == nil)
67. {
68. arrss = [tmp1 componentsSeparatedByString:@"</td></tr><tr><td"];
69. }
70. if(arrss)
71. {
72. if([arrss count]>=2)
73. {
74. tmp2 = [arrss objectAtIndex:0];
75. NSLog(@"tmp2= %@", tmp2);
76. return tmp2;
77. }
78. }
79. }
80. }
81. }
82. return @"";
83. }