如何使用猎鹰的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(); 
    } 
} 
+0

这不是你的问题,但你永远需要做'进口的java.lang。*;'如Java这是否自动为您。总是有。 – 2011-12-24 13:37:19

+0

亚那是真的,但删除导入java.lang。*后,它不会工作。 – 2011-12-24 16:39:36

+0

删除之后无法使用?!要么你选择与HTTPRequestPoster相同的软件包中的类名称非常不恰当,要么这个世界真的很奇怪。 – 2011-12-24 18:48:35

你做所有繁重的任务,除了两个小问题:

  • 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