Youtube API自动完成搜索无法正常工作

时间:2016-05-04 14:50:43

标签: objective-c autocomplete search-suggestion

我正在使用下面的代码,但它不适用于我并且总是得到空响应但是当该URL有害生物进入浏览器时它会下载一个包含下面文本的f.txt文件

  

window.google.ac.h([" Y",[["年轻暴徒" 0],[" youtube",0],[ "青年特洛伊   sivan",0],["年轻的海豚",0],[" yo gotti",0],[" yg",0],[ "瑜伽",0],["你   应该在这里cole swindell",0],[" yandere模拟器",0],["年轻的暴徒   最好的朋友",0]],{" k":1," l":" 1"," q":& #34; Fu65vJmwPDpRvrCvJ_hO3MqI15U"}])

   @property(strong, nonatomic) NSMutableArray *ParsingArray // Put that in .h file or after @interface in your .m file

  -(void)autocompleteSegesstions : (NSString *)searchWish{
//searchWish is the text from your search bar (self.searchBar.text)


NSString *jsonString = [NSString stringWithFormat:@"http://suggestqueries.google.com/complete/search?client=youtube&ds=yt&alt=json&q=%@", searchWish];
    NSString *URLString = [jsonString stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding]; // Encoding to identify where, for example, there are spaces in your query.


NSLog(@"%@", URLString);

    NSData *allVideosData = [[NSData alloc]initWithContentsOfURL:[[NSURL alloc]initWithString:URLString]];

NSString *str = [[NSString alloc]initWithData:allVideosData encoding:NSUTF8StringEncoding];
NSLog(@"%@", str); //Now you have NSString contain JSON. 
NSString *json = nil;
NSScanner *scanner = [NSScanner scannerWithString:str];
[scanner scanUpToString:@"[[" intoString:NULL]; // Scan to where the JSON begins
[scanner scanUpToString:@"]]" intoString:&json];
//The idea is to identify where the "real" JSON begins and ends.
json = [NSString stringWithFormat:@"%@%@", json, @"]]"];
NSLog(@"json = %@", json);


NSArray *jsonObject = [NSJSONSerialization JSONObjectWithData:[json dataUsingEncoding:NSUTF8StringEncoding] //Push all the JSON autocomplete detail in to jsonObject array.
                                                                                 options:0 error:NULL];
self.ParsingArray = [[NSMutableArray alloc]init]; //array that contains the objects.
for (int i=0; i != [jsonObject count]; i++) {
    for (int j=0; j != 1; j++) {
        NSLog(@"%@", [[jsonObject objectAtIndex:i] objectAtIndex:j]);
        [self.ParsingArray addObject:[[jsonObject objectAtIndex:i] objectAtIndex:j]];
        //Parse the JSON here...

    }

}} 

1 个答案:

答案 0 :(得分:1)

解决这个问题这里有两件事要知道:

在iOS 9中,默认情况下不支持http://。您必须安全地进行通信(使用https://)。如果必须,您可以在Info.plist中关闭此功能。 NSFileManager URL必须是磁盘上文件的路径 - 也就是说,它们必须是文件URL。你的不是;它是一个http:// URL。如果您的目标是下载文件然后将其复制到某处,请使用NSURLSession的下载任务。