Используя запрос Get с URLConnection
В настоящее время я пишу программу для связи с устройством в моей сети, и следующий код - это то, что у меня есть, оно прошло аутентификацию и может получить веб-страницу с устройства, однако я не смог заставить работать запрос GET, когда я запускаю код ниже, я получаю ошибку:
Exception in thread "main" java.io.FileNotFoundException: http://192.168.100.222:80
at sun.net.www.protocol.http.HttpURLConnection.getInputStream(Unknown Source)
когда я ввожу данные на веб-страницу, это эквивалентно переходу http://l192.168.xxx.xxx/2?A=3&p=1&X=1234 и из tcpflow GET /2?A=4&p=1&X=1234 HTTP/1.1
Я попытался создать новое соединение URL с http://192.168.xxx.xxx/2?A=3&p=1&X=1234, и это сработало, но у меня есть несколько вариантов ввода, и я не хочу создавать новое соединение для каждого из них, как я могу сделать эквивалент, оставаясь на связи? или что я не так сделал в коде?
заранее спасибо.
public class main {
public static void main(String[] argv) throws Exception {
Authenticator.setDefault(new MyAuthenticator());
URL url = new URL("http://192.168.xxx.xxx");
URLConnection connection = url.openConnection();
connection.setDoOutput(true);
connection.setDoInput(true);
OutputStreamWriter out = new OutputStreamWriter(connection.getOutputStream());
out.write("Get /2?A=4&p=1&X=1234 HTTP1.1");
out.close();
BufferedReader in = new BufferedReader(new InputStreamReader(connection.getInputStream()));
String decodedString;
while ((decodedString = in.readLine()) != null) {
System.out.println(decodedString);
}
in.close();
}
1 ответ
Я не хочу создавать новое соединение для каждого из них
Не беспокойся об этом. HttpURLConnection
делает подключение пула под капотом. Просто используйте ваши реальные URL, не пытайтесь перехитрить Java.