У меня возникли проблемы с установкой URL-соединения. Я считаю, что если я создаю один объект URL, он работает нормально. Но все после этого не работает вообще. Сначала я подумал, что это могло произойти из-за того, что я не закрыл поток, но это было не так.
-1 = Отказ
1 = успех
Testing:
URLFail test0 = new URLFail();
URLFail test1 = new URLFail(1);
URLFail test2 = new URLFail(1,1);
OutPut:
0Param 1
1Param -1
2Param -1
Теперь, если я переключаю, какой объект создается, сначала меняются результаты.
Testing:
URLFail test2 = new URLFail(1,1);
URLFail test0 = new URLFail();
URLFail test1 = new URLFail(1);
OutPut:
0Param -1
1Param -1
2Param 1
В этом случае только test2 завершился успешно. Это заставляет меня верить, что для каждого класса может использоваться только один поток URL?
Это то, что я использовал для доступа и анализа URL.
URL url = null;
URLConnection urlConnection = null;
try {
url = new URL("xxxxx"); // In my program this is a proper URL
} catch (MalformedURLException ex) {
return -1;
}
ArrayList<String> index = new ArrayList<String>();
try {
urlConnection = url.openConnection();
BufferedReader in = new BufferedReader(new InputStreamReader(urlConnection.getInputStream()));
while (in.ready()) {
index.add(in.readLine());
}
in.close();
} catch (IOException ex) {
return -1;
}
Пока я действительно не знаю, что случилось. Я думаю, это может быть связано с тем, что я пытаюсь зайти на тот же сайт слишком быстро?
Я также пытался без объекта URLConnection с помощью метода openStream (), найденного в URL. Будем благодарны за любую помощь, также приветствуются любые общие комментарии о самом коде. Спасибо!
Это весь код:
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.net.MalformedURLException;
import java.net.URL;
import java.net.URLConnection;
import java.util.ArrayList;
public class URLFail {
private int name;
public static void main(String[] args) {
URLFail test0 = null;
URLFail test1 = null;
URLFail test2 = null;
try {
test0 = new URLFail();
System.out.println("First Complete...");
Thread.sleep(1000);
test2 = new URLFail();
System.out.println("Second Complete...");
Thread.sleep(1000);
test1 = new URLFail();
System.out.println("Third Complete...");
} catch (InterruptedException e) {
// TODO: handle exception
}
System.out.println();
System.out.println("0Param " + test0.name);
System.out.println("1Param " + test1.name);
System.out.println("2Param " + test2.name);
}
public URLFail() {
name = getAsList();
}
public int getAsList() {
URL url = null;
URLConnection urlConnection = null;
try {
url = new URL("xxxxx");
} catch (MalformedURLException ex) {
ex.printStackTrace();
return -1;
}
ArrayList<String> index = new ArrayList<String>();
try {
urlConnection = url.openConnection();
BufferedReader in = new BufferedReader(new InputStreamReader(
urlConnection.getInputStream()));
while (in.ready()) {
index.add(in.readLine());
}
in.close();
} catch (IOException ex) {
ex.printStackTrace();
return -1;
}
if (index.isEmpty()) {
return -1;
} else {
return 1;
}
}
}
Я пробовал это с google.com, и оно работало нормально, поэтому это должен быть хост, к которому я пытаюсь подключиться. Есть ли способ закрыть соединение / отключить URL?