2013-02-14 10 views
7

Sto tentando di utilizzare l'API di ricerca personalizzata di Google nel mio progetto .NET. Ho una chiave API fornita dalla mia azienda. Ho creato un motore di ricerca personalizzato utilizzando il mio account Google e copiato il valore "cx".Passi per l'utilizzo dell'API di ricerca personalizzata di Google in .NET

Sto usando il seguente codice:

string apiKey = "My company Key"; 
string cx = "Cx"; 
string query = tbSearch.Text; 

WebClient webClient = new WebClient(); 
webClient.Headers.Add("user-agent", "Only a test!"); 

string result = webClient.DownloadString(String.Format("https://www.googleapis.com/customsearch/v1?key={0}&cx={1}&q={2}&alt=json", apiKey, cx, query)); 

Sto ottenendo il seguente errore: "Il server remoto ha restituito un errore: (403) Forbidden".

Ho provato il seguente codice troppo :

Google.Apis.Customsearch.v1.CustomsearchService svc = new Google.Apis.Customsearch.v1.CustomsearchService(); 
svc.Key = apiKey; 

Google.Apis.Customsearch.v1.CseResource.ListRequest listRequest = svc.Cse.List(query); 
listRequest.Cx = cx; 
Google.Apis.Customsearch.v1.Data.Search search = listRequest.Fetch(); 

foreach (Google.Apis.Customsearch.v1.Data.Result result1 in search.Items) 
{ 
    Console.WriteLine("Title: {0}", result1.Title); 
    Console.WriteLine("Link: {0}", result1.Link); 
} 

Qui ottengo la seguente eccezione al Fetch():

Google.Apis.Requests.RequestError accesso Non configurato [403] errori [Messaggio [Accesso Non configurata] Localizzazione [-] Ragione [accessNotConfigured] Dominio [usageLimits]

è il parametro CX richiesto? Sto ricevendo l'errore perché sto utilizzando la chiave fornita dalla mia azienda e utilizzando il parametro CX dal motore di ricerca personalizzato utilizzando il mio account Google?

C'è qualche altro modo per ottenere "cx"? Non vogliamo visualizzare annunci Google.

Grazie mille in anticipo per l'aiuto.

risposta

10

Non sono sicuro che tu sia ancora interessato a questo.

Per ottenere risultati senza pubblicità è necessario pagare per questo. Info @ Google

e sì il cx è richiesto perché specifica il motore di ricerca personalizzato google che si desidera utilizzare per la ricerca. è possibile creare un motore di ricerca personalizzato da This google page

e qui è il codice corrente per recuperare i risultati di ricerca per la versione corrente di api 1.3.0-beta

 string apiKey = "Your api key"; 
     string cx = "Your custom search engine id"; 
     string query = "Your query"; 

     var svc = new Google.Apis.Customsearch.v1.CustomsearchService(new BaseClientService.Initializer { ApiKey = apiKey }); 
     var listRequest = svc.Cse.List(query); 

     listRequest.Cx = cx; 
     var search = listRequest.Fetch(); 

     foreach (var result in search.Items) 
     { 
      Response.Output.WriteLine("Title: {0}", result.Title); 
      Response.Output.WriteLine("Link: {0}", result.Link); 
     } 

Spero che questo aiuti

8

Invece di ,

var search = listRequest.Fetch(); 

Ma ora non supporta il metodo Fetch(), piuttosto è necessario utilizzare il metodo Execute().

var search = listRequest.Execute(); 
+1

vedere http://hintdesk.com/c-how-to-use-google-custom-search-api/ – Cel

Problemi correlati