1

我做了一些研究来解决我的问题,但遗憾的是直到现在我都做不到。这没什么大不了的,但我坚持下去了。。

我需要在谷歌等搜索引擎中使用一些关键字进行搜索。我在这里有两个班级来做到这一点:

    package com.sh.st;

import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;


public class EventSearch extends SearchScreen implements ActionListener {

    public EventSearch(){

        btsearch.addActionListener(this);

    }

        public void actionPerformed(ActionEvent e){

            if(e.getSource()==btsearch){
            String query=txtsearch.getText();
            }

        }



}

    package com.sh.st;

import java.io.InputStream;
import java.net.URL;
import java.net.URLConnection;

public class HttpRequest extends SearchScreen 
{
    URL url = new URL("google.com" + "?" + query).openConnection();
    URLConnection connection = url.openConnection();
    connection.setRequestProperty("Accept-Charset", "UTF-8"); //Possible Incompatibility
    InputStream response = connection.getInputStream();

}

因此,txtsearch 来自另一个名为 SearchScreen 的类,我将该值归因于一个名为 query 的字符串。我需要将查询传递给 HttpRequest 类并为此进行扩展,我确定这是错误的,但我看到其他人这样做;这是第一个问题,我该怎么做?

第二个也是最重要的我收到语法错误:

在此处输入图像描述 在此处输入图像描述

我没有完全理解 "connection.setRequestProperty("Accept-Charset", "UTF-8");" 的含义和实用性 '当然阅读我可以理解这是关于我的请求可能会出现的字符,但即使语法错误对我来说并不清楚

我在以下链接中进行了研究:

  1. 如何在 Java 中发送 HTTP 请求?
  2. 从密码字段中获取文本
  3. http://www.xyzws.com/Javafaq/how-to-use-httpurlconnection-post-data-to-web-server/139
  4. 使用 java.net.URLConnection 触发和处理 HTTP 请求

他们都有很好的材料,但我无法完全理解其中的所有内容,而且我试图遵循的部分不起作用。有人可以帮我吗?

编辑:[主题已解决]

4

1 回答 1

1

试试这个代码:(内联评论)

// Fixed search URL; drop openConnection() at the end
URL url = new URL("http://google.com/search?q=" + query);

// Setup connection properties (this doesn't open the connection)
URLConnection connection = url.openConnection();
connection.setRequestProperty("Accept-Charset", "UTF-8");

// Actually, open the HTTP connection
connection.connect();

// Setup a reader
BufferedReader reader = new BufferedReader(
                        new InputStreamReader(connection.getInputStream()));

// Read line by line
String line = null;
while ((line = reader.readLine()) != null) {
     System.out.println (line);
}

// Close connection
reader.close();
于 2013-06-21T19:31:09.607 回答