2010-04-25 7 views
4

사용자가 내 앱에 키워드를 입력 한 다음 Google에서이 키워드를 검색하고 결과에 대한 논리를 수행하고 최종 결론을 사용자에게 표시하려고합니다.iPhone 앱 내에서 Google 검색

이것이 가능합니까? 내 앱에서 Google 검색을 수행하려면 어떻게해야합니까? 답장의 형식은 무엇입니까? 만약 누군가가 이것에 대한 몇 가지 코드 샘플을 가지고, 그들은 크게 감사하겠습니다.

감사합니다,

+0

음 ... Google AJAX 검색 API (http://code.google.com/apis/ajaxsearch)가 있습니다. /)는 자바 스크립트 용이지만 범용 목적이 아닌 것 같습니다. 다른 Google 서비스에 대한 API가 있습니다. –

답변

10

A는 RESTful search request to Google AJAXJSON 형식으로 응답을 반환합니다.

ASIHTTPRequest으로 요청을 제출하고 json-framework으로 iPhone에서 JSON 형식의 응답을 구문 분석 할 수 있습니다.

예를 들어, 구글 AJAX 페이지의 예를 기반으로하는 검색 요청을 만들고 제출, 당신은 ASIHTTPRequest의 -requestWithURL-startSynchronous 방법을 사용할 수 있습니다

NSURL *searchURL = [NSURL URLWithString:@"http://ajax.googleapis.com/ajax/services/search/web?v=1.0&q=Paris%20Hilton"]; 
ASIHTTPRequest *googleRequest = [ASIHTTPRequest requestWithURL:searchURL]; 
[googleRequest addRequestHeader:@"Referer" value:[self deviceIPAddress]]; 
[googleRequest startSynchronous]; 

당신은에 따라 NSURL 인스턴스를 구축 할 것 귀하의 검색어, escaping 요청 매개 변수.

Google의 예를 따라 편지에 API 키를 추가 할 수도 있습니다. Google은 검색을 위해 API 키를 사용하도록 요청하지만 분명히 필수는 아닙니다. API 키 here에 가입 할 수 있습니다.

또한 ASIHTTPRequest 문서에 설명 된 비동기 요청 메소드가 있습니다. 검색 요청이 진행되는 동안 iPhone UI가 묶이지 않게하려면이 코드를 사용합니다.

당신이 손에 구글의 JSON 형식의 응답이 있으면, 당신은 NSDictionary 객체로 응답을 구문 분석 JSON 프레임 워크 SBJSON 파서 객체를 사용할 수 있습니다

NSError *requestError = [googleRequest error]; 
if (!requestError) { 
    SBJSON *jsonParser = [[SBJSON alloc] init]; 
    NSString *googleResponse = [googleRequest responseString]; 
    NSDictionary *searchResults = [jsonParser objectWithString:googleResponse error:nil]; 
    [jsonParser release]; 
} 

당신은 또한에 리퍼러 IP 주소를 지정해야합니다 요청 헤더 (이 경우 iPhone의 로컬 IP 주소) :

- (NSString *) deviceIPAddress { 
    char iphoneIP[255]; 
    strcpy(iphoneIP,"127.0.0.1"); // if everything fails 
    NSHost *myHost = [NSHost currentHost]; 
    if (myHost) { 
     NSString *address = [myHost address];  
     if (address) 
      strcpy(iphoneIP, [address cStringUsingEncoding:NSUTF8StringEncoding]); 
    } 
    return [NSString stringWithFormat:@"%s",iphoneIP]; 
} 
+0

자세한 답변을 주셔서 대단히 감사합니다! –