在捕获 url 的内容并将其存储到字符串数组中时出现错误 "cannot find symbol"
getting an error "cannot find symbol" while Capturing the contents of a url and storing it into a string array
我正在学习 java 中的 servlet,我正在尝试捕获 URL 内容并将其存储到字符串数组中。 Bellow 是我按照一些教程放在一起的代码,这些教程似乎不适用于 servlet 环境(这是我尝试做的练习的第一部分)。
我在这一行收到错误:
cookies.add(line);
完整代码如下:
//package fortune;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.net.URL;
import java.util.ArrayList;
import java.util.Random;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import static java.util.Arrays.*;
@WebServlet(name = "FortuneServlet", urlPatterns = {"/"})
public class FortuneServlet extends HttpServlet {
private String [] cookies = null;
//ArrayList<String[]> cookies = new ArrayList<String[]>();
public void geturl(String[] args) {
try
{
URL url = new URL(" http://fortunes.cat-v.org/openbsd/");
// read text returned by server
BufferedReader in = new BufferedReader(new InputStreamReader(url.openStream()));
String line = in.readLine();
while((line = in.readLine()) != null)
{
cookies.add(line);
line = in.readLine();
}
in.close();
}
catch (java.net.MalformedURLException e) {
System.out.println("Malformed URL: " + e.getMessage());
}
catch (IOException e) {
System.out.println("I/O Error: " + e.getMessage());
}
}
public void init() throws ServletException {
// Add your own code here!
// 1) Open the URL
// 2) Get the contents
// 3) Extract the cookie texts to an array
}
@Override
protected void doGet(
HttpServletRequest request,
HttpServletResponse response)
throws ServletException, IOException {
response.setCharacterEncoding("UTF-8");
response.setContentType("text/plain");
if (cookies != null) {
response.getWriter().println(
cookies[new Random().nextInt(cookies.length)]
);
} else {
response.getWriter().println("No luck!");
}
}
}
private String [] cookies = null;
此处初始化一个字符串数组并将其设置为空。
cookies.add(line);
这里你假设数组有一个 add()
方法,它没有。
您应该使用带有 add()
方法的 List
注释掉的解决方案。您不应该使用数组列表,而应该使用字符串列表:
List<String> cookies = new ArrayList<>();
然后您可以按照您已经使用的方式添加 cookie:
cookies.add(line);
你不能在数组上使用 add()
方法。你必须使用列表。所以而不是
private String [] cookies = null;
使用
private List<String> cookies = new ArrayList<String>();
我正在学习 java 中的 servlet,我正在尝试捕获 URL 内容并将其存储到字符串数组中。 Bellow 是我按照一些教程放在一起的代码,这些教程似乎不适用于 servlet 环境(这是我尝试做的练习的第一部分)。
我在这一行收到错误:
cookies.add(line);
完整代码如下:
//package fortune;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.net.URL;
import java.util.ArrayList;
import java.util.Random;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import static java.util.Arrays.*;
@WebServlet(name = "FortuneServlet", urlPatterns = {"/"})
public class FortuneServlet extends HttpServlet {
private String [] cookies = null;
//ArrayList<String[]> cookies = new ArrayList<String[]>();
public void geturl(String[] args) {
try
{
URL url = new URL(" http://fortunes.cat-v.org/openbsd/");
// read text returned by server
BufferedReader in = new BufferedReader(new InputStreamReader(url.openStream()));
String line = in.readLine();
while((line = in.readLine()) != null)
{
cookies.add(line);
line = in.readLine();
}
in.close();
}
catch (java.net.MalformedURLException e) {
System.out.println("Malformed URL: " + e.getMessage());
}
catch (IOException e) {
System.out.println("I/O Error: " + e.getMessage());
}
}
public void init() throws ServletException {
// Add your own code here!
// 1) Open the URL
// 2) Get the contents
// 3) Extract the cookie texts to an array
}
@Override
protected void doGet(
HttpServletRequest request,
HttpServletResponse response)
throws ServletException, IOException {
response.setCharacterEncoding("UTF-8");
response.setContentType("text/plain");
if (cookies != null) {
response.getWriter().println(
cookies[new Random().nextInt(cookies.length)]
);
} else {
response.getWriter().println("No luck!");
}
}
}
private String [] cookies = null;
此处初始化一个字符串数组并将其设置为空。
cookies.add(line);
这里你假设数组有一个 add()
方法,它没有。
您应该使用带有 add()
方法的 List
注释掉的解决方案。您不应该使用数组列表,而应该使用字符串列表:
List<String> cookies = new ArrayList<>();
然后您可以按照您已经使用的方式添加 cookie:
cookies.add(line);
你不能在数组上使用 add()
方法。你必须使用列表。所以而不是
private String [] cookies = null;
使用
private List<String> cookies = new ArrayList<String>();