0

这是想法:

  1. 一个程序(在 Java 中)将接受一个输入
  2. 程序接受输入并在网上某处使用它来获得结果
  3. 它把它上网的结果显示在程序界面上

这有点像您如何通过 Google 桌面应用程序而不是浏览器进行搜索?

我只需要在这方面朝着正确的方向大步前进。(也许我应该寻找某种方法)我对 Java API 不是很熟悉。

4

4 回答 4

1

您可以使用 Java 的标准 HttpURLConnection 来搜索内容。然后解析响应,您只需要Apache tika,它用于从 HTML 页面中提取文本。

这是一个使用 Url Connection 的简单示例:

import java.io.BufferedReader;
import java.io.DataOutputStream;
import java.io.IOException;
import java.io.InputStreamReader;
import java.net.HttpURLConnection;
import java.net.MalformedURLException;
import java.net.ProtocolException;
import java.net.URL;
import java.net.URLEncoder;

public class SimpleHTTPRequest {

  /**
   * @param args
   */
  public static void main(String[] args) {
      HttpURLConnection connection = null;
      DataOutputStream wr = null;
      BufferedReader rd  = null;
      StringBuilder sb = null;
      String line = null;

      URL serverAddress = null;

      try {
          serverAddress = new URL("http://www.google.com/search?q=test");
          //set up out communications stuff
          connection = null;

          //Set up the initial connection
          connection = (HttpURLConnection)serverAddress.openConnection();
          connection.setRequestMethod("GET");
          connection.setDoOutput(true);
          connection.setDoInput(true);
          connection.setUseCaches(false);
          connection.setRequestProperty ( "Content-type","text/xml" ); 
          connection.setAllowUserInteraction(false);
          String strData = URLEncoder.encode("test","UTF-8");
          connection.setRequestProperty ( "Content-length", "" + strData.length ());  
          connection.setReadTimeout(10000);
          connection.connect();

          //get the output stream writer and write the output to the server
          //not needed in this example
          wr = new DataOutputStream(connection.getOutputStream());
          wr.writeBytes("q="+strData);
          wr.flush();

          //read the result from the server
          rd  = new BufferedReader(new InputStreamReader(connection.getInputStream()));
          sb = new StringBuilder();

          while ((line = rd.readLine()) != null)
          {
              sb.append(line + '\n');
          }

          System.out.println(sb.toString());

      } catch (MalformedURLException e) {
          e.printStackTrace();
      } catch (ProtocolException e) {
          e.printStackTrace();
      } catch (IOException e) {
          e.printStackTrace();
      }
      finally
      {
          //close the connection, set all objects to null
          connection.disconnect();
          rd = null;
          sb = null;
          wr = null;
          connection = null;
      }
  }
}

在这里您可以找到使用 apache tika 提取文本的示例

于 2013-02-20T08:19:31.670 回答
0

您必须了解 Java 套接字编程以及 Web 服务器的工作原理。除此之外,您还可以使用HttpURLConnection类来建立与 Web 服务器的连接,并且可以下载内容。

http://docs.oracle.com/javase/1.4.2/docs/api/java/net/HttpURLConnection.html

于 2013-02-20T06:53:53.057 回答
0

您可以使用开源 lib Apache Http 组件。这使工作变得轻松。

于 2013-02-20T06:56:46.017 回答
0

您必须使用 URL 类来连接网络。

例如

        url1 = new URL(url);
        InputStream input=url1.openStream();
        BufferedInputStream bis=new BufferedInputStream(input);
        dis=new DataInputStream(bis);
       // byte[] buffer=new byte[1000];
        String data="";
        while(dis.available()!=0)
        {
            data+=dis.readLine();
        }

        jobj=new JSONObject(data);
于 2013-02-20T07:36:55.700 回答