如何使用猎鹰的RESTful API
问题描述:
我米使用FALCON语义搜索引擎的RESTful API &写了这个程序 ,但没有得到应该从搜索engine.Please回应的结果看代码&帮我弄的URI。如何使用猎鹰的RESTful API
package httpProject;
import java.io.*;
import java.net.*;
import java.lang.*;
public class HTTPRequestPoster {
public String sendGetRequest(String endpoint, String requestParameters) {
String result = null;
if (endpoint.startsWith("http://")) {
try {
String urlStr = endpoint;
if (requestParameters != null && requestParameters.length() > 0) {
urlStr += "?" + requestParameters;
}
URL url = new URL(urlStr);
URLConnection conn = url.openConnection();
// Get the response
BufferedReader rd = new BufferedReader(new InputStreamReader(conn.getInputStream()));
StringBuffer sb = new StringBuffer();
String line;
while ((line = rd.readLine()) != null) {
sb.append(line);
}
rd.close();
result = sb.toString();
} catch (Exception e) {
e.printStackTrace();
}
}
return result;
}
/**
* @param args
* @throws UnsupportedEncodingException
*/
public static void main(String[] args) throws UnsupportedEncodingException {
// TODO Auto-generated method stub
//HTTPRequestPoster a = new HTTPRequestPoster();//
HTTPRequestPoster astring = new HTTPRequestPoster();
String param = "query=Person";
String stringtoreverse = URLEncoder.encode(param, "UTF-8");
astring.sendGetRequest("http://ws.nju.edu.cn/falcons/api/classsearch.jsp", stringtoreverse);
astring.toString();
System.out.println(astring);
//PrintStream.class.toString();
}
}
答
你做所有繁重的任务,除了两个小问题:
URLEncoder.encode(...)
不应该被用在这里。 Javadoc表示它将字符串翻译为application/x-www-form-urlencoded
格式,即在执行POST
时。astring.sendGetRequest(...)
而不是astring
本身应该用作结果。
以下工作:
public static void main(String[] args) throws UnsupportedEncodingException {
// TODO Auto-generated method stub
//HTTPRequestPoster a = new HTTPRequestPoster();//
HTTPRequestPoster astring = new HTTPRequestPoster();
String param = "query=Person";
String result = astring.sendGetRequest("http://ws.nju.edu.cn/falcons/api/classsearch.jsp", param);
System.out.println(result);
}
+0
感谢您的建议,但我需要以UTF-8格式编码字符串 – 2011-12-24 16:34:30
+0
它是Java,所以您不需要明确地这样做。 – edwardw 2011-12-24 17:14:26
这不是你的问题,但你永远需要做'进口的java.lang。*;'如Java这是否自动为您。总是有。 – 2011-12-24 13:37:19
亚那是真的,但删除导入java.lang。*后,它不会工作。 – 2011-12-24 16:39:36
删除之后无法使用?!要么你选择与HTTPRequestPoster相同的软件包中的类名称非常不恰当,要么这个世界真的很奇怪。 – 2011-12-24 18:48:35