- (void)getUrlTitleWithUrlContent:(NSString *)urlString
{
NSString* cleanUrlString = [urlString stringByTrimmingCharactersInSet:[NSCharacterSet newlineCharacterSet]];
if([cleanUrlString rangeOfString:@"http://" options:NSCaseInsensitiveSearch].location == NSNotFound
&& [cleanUrlString rangeOfString:@"https://" options:NSCaseInsensitiveSearch].location == NSNotFound)
{
cleanUrlString = [@"http://" stringByAppendingString:cleanUrlString];
}
__weak ASIHTTPRequest *request = [ASIHTTPRequest requestWithURL:[NSURL URLWithString:cleanUrlString]];
request.defaultResponseEncoding = NSUTF8StringEncoding;//设置默认的编码方式,utf-8
request.timeOutSeconds = 5;
[request setCompletionBlock:^{
NSString* title = @"";
if(request.responseString != nil)
{
NSRange startRange = [request.responseString rangeOfString:@"<title>" options:NSCaseInsensitiveSearch];
NSRange endRange = [request.responseString rangeOfString:@"</title>" options:NSCaseInsensitiveSearch];//NSCaseInsensitiveSearch:不区分大小写比较
if (startRange.location != NSNotFound
&& endRange.location != NSNotFound
&& endRange.location >= startRange.location + startRange.length)
{
NSRange subRange = NSMakeRange(startRange.location + startRange.length, endRange.location - (startRange.location + startRange.length));
title = [request.responseString substringWithRange:subRange];
title = [title stringByTrimmingCharactersInSet:[NSCharacterSet newlineCharacterSet]];//去掉换行
}
}
}];
[request setFailedBlock:^{
DLog(@"failed ~~~ request.respond = %@",request.responseString);
}];
[request startAsynchronous];
}
可以根据request.responseHeaders中"Content-Type"(或responseString的meta)中看到编码方式,但是由于ASI已经自动帮助我们进行转码了。所以我们不需要自己去针对不同的编码方式进行编码。只需要将responseString中将title截取出来即可。值得注意的是,要提前设置asi request的默认编码格式(UTF-8),否则有可能会出现乱码。
</pre><pre name="code" class="plain">