2011-12-24 10 views
1

FALCONセマンティック検索エンジンRESTful APIを使用しています&このプログラムを書きました しかし、検索エンジンから応答する必要がある結果は得られません。コード&を参照してください。Falcon RESTful APIを使用してURIを取得する方法

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はあなたのために自動的にそれがそうであるように。常に持っています。 –

+0

これは当てはまりますが、import java.lang。*;を削除しても機能しません。 –

+0

それを取り除いても機能しませんか?どちらかといえば、非常に悪い名前を選んだ「HTTPRequestPoster」と同じパッケージ内にクラスがあるか、まったく奇妙な世界です。 –

答えて

1

次の2つの小さな問題を除いて、すべての力仕事をやった:

  • 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形式の文字列をエンコードする必要があります –

+0

Javaのため、明示的に行う必要はありません。 – edwardw

関連する問題