Connect to internet : Google Custom Search in java app “not connecting” ()

做~自己de王妃 提交于 2019-12-14 02:35:46

问题


I am starting out on using google custom search api in java but it is just not connecting. I am receiving json data from google.(i am supposed to but it is not connecting..:()

 HttpResponse response = httpClient.execute(httpGet); 
 // exception is thrown at this point.

which is a line in my code. Code is :

public class MyGoogleSearch{
final static  String searchURL = "https://www.googleapis.com/customsearch/v1?";
// This is Important : 

final static String apiKey = "My-Key-has a '-'";
final static String customSearchEngineKey = "My-Custom-search-engine-that-has a ':' too";

public String makeSearchString(String qSearch){
    String toSearch = searchURL + "key=" + apiKey + "&cx=" + customSearchEngineKey;
    toSearch += "&q=" + qSearch + "&alt=json";
    return toSearch;
}

public static void main(String[] argv) throws IOException{
    System.setProperty("proxyHost", "my-host");
    System.setProperty("proxyPort","my-Port");

    MyGoogleSearch browser = new MyGoogleSearch();
    String toSearch = browser.makeSearchString("flower");
    System.out.println(toSearch);
    HttpClient httpClient = new DefaultHttpClient();
    HttpGet httpGet = new HttpGet(toSearch);

    HttpResponse response = httpClient.execute(httpGet);
    // exception is thrown here.
    HttpEntity entity = response.getEntity();

    if(entity != null){
        InputStream inStream = entity.getContent();
        BufferedReader reader = new BufferedReader(new InputStreamReader(inStream));
        int length = 0;
        byte[] buffer  = new byte[2048];
        while((length = inStream.read(buffer)) != -1)
            System.out.println(buffer);
        String inputLine;
        while((inputLine = reader.readLine()) != null)
            System.out.println(inputLine);
    }
}

}

// Error is:

Exception in thread "main" org.apache.http.conn.HttpHostConnectException: Connection to https://www.googleapis.com refused at   
org.apache.http.impl.conn.DefaultClientConnectionOperator.openConnection(DefaultClientConnectionOperator.java:158)

....

Caused by: java.net.ConnectException: Connection timed out: connect
at java.net.PlainSocketImpl.socketConnect(Native Method)

Is this the valid way to do ? I have not done any kind of UTF-8 encoding. Would that be a problem ?

On this Page:

http://code.google.com/apis/customsearch/v1/getting_started.html
Here is an example of how this works in the JSON/Atom Custom Search API, which searches a test Custom Search Engine for lectures:

GET https://www.googleapis.com/customsearch/v1?key=INSERT-YOUR-KEY&cx=017576662512468239146:omuauf_lfve&q=lectures

// Is this for javaScript only or for java too

I however put my Custom Search Engine Key at cx which should be right

I went to google api explorer https://code.google.com/apis/explorer/

I choose custom search and filled *q and cx column as i filled in my program:

and it showed results and GET https://www.googleapis.com/customsearch/v1?q=o&cx={MY-Custom-Search-Engine-No}&pp=1&key={YOUR_API_KEY}

but this time cx value had %3 at the place of ':' character.

How would i do that for all the characters in my keys and cse-no


回答1:


the problem seems to be connecting to googleapis, are you sure you're using the correct proxy? Try just connecting to google.com or any URL to test you are getting past the proxy, try it without setting the proxy as well.



来源:https://stackoverflow.com/questions/7301608/connect-to-internet-google-custom-search-in-java-app-not-connecting

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!