|
AccessGoogle.java
|
(c) (ABA."Saba")
|
package abagames.gglmekata;
import java.io.*;
import java.net.*;
/**
* Access Google with SOAP Interface.
*/
public class AccessGoogle {
private final String DEFAULT_SERVICE_URL =
"http://api.google.com/search/beta2";
private static String key;
private static final String KEY_FILE_NAME = "google_key.cocoon.xml";
static {
try {
key = XMLHandler.getElement(
XMLHandler.readFileString(GglMekataServlet.SYSTEM_ROOT_PATH+KEY_FILE_NAME),
"key");
} catch ( IOException e ) {
e.printStackTrace();
}
}
public static void setKey(String key) {
AccessGoogle.key = key;
}
public static String getKey() {
return key;
}
public String search(String query)
throws MalformedURLException, IOException, UnsupportedEncodingException {
URL url = new URL(DEFAULT_SERVICE_URL);
URLConnection conn = url.openConnection();
conn.setDoOutput(true);
conn.setRequestProperty("Content-Type", "text/xml");
PrintWriter pst = new PrintWriter(new OutputStreamWriter(conn.getOutputStream(), "UTF-8"));
pst.print("<?xml version='1.0' encoding='UTF-8'?> <SOAP-ENV:Envelope xmlns:SOAP-ENV=\"http://schemas.xmlsoap.org/soap/envelope/\" xmlns:xsi=\"http://www.w3.org/1999/XMLSchema-instance\" xmlns:xsd=\"http://www.w3.org/1999/XMLSchema\"> <SOAP-ENV:Body> <ns1:doGoogleSearch xmlns:ns1=\"urn:GoogleSearch\" SOAP-ENV:encodingStyle=\"http://schemas.xmlsoap.org/soap/encoding/\"> <key xsi:type=\"xsd:string\">");
pst.print(key);
pst.print("</key> <q xsi:type=\"xsd:string\">");
pst.print(query);
pst.print("</q> <start xsi:type=\"xsd:int\">0</start> <maxResults xsi:type=\"xsd:int\">1</maxResults> <filter xsi:type=\"xsd:boolean\">true</filter> <restrict xsi:type=\"xsd:string\"></restrict> <safeSearch xsi:type=\"xsd:boolean\">false</safeSearch> <lr xsi:type=\"xsd:string\"></lr> <ie xsi:type=\"xsd:string\">utf8</ie> <oe xsi:type=\"xsd:string\">shift-jis</oe> </ns1:doGoogleSearch> </SOAP-ENV:Body> </SOAP-ENV:Envelope>");
pst.close();
conn.connect();
StringBuffer resultBuffer = new StringBuffer();
BufferedReader rsp = new BufferedReader(new InputStreamReader(conn.getInputStream(), "UTF-8"));
for ( ; ; ) {
String rspStr = rsp.readLine();
if ( rspStr == null ) break;
resultBuffer.append(rspStr);
}
rsp.close();
return resultBuffer.toString();
}
}