При открытии соединения, как я могу узнать лучший формат URL для использования?При использовании URL.openConnection() лучший способ обработки URL-адресов, таких как «www» и «https»?
Многие сайты возвращают разные результаты в зависимости от того, использует ли URL «www» и/или «https».
Например, вот тест, который я написал, чтобы увидеть некоторые из различных результатов:
import java.util.Scanner;
import java.util.ArrayList;
import java.net.*;
import java.io.*;
public class Test {
public static void main(String[] args)
{
String baseURL = "google.com";
try
{
java.net.URL url = new java.net.URL("http://" + baseURL);
java.net.URLConnection connection = url.openConnection();
connection.setRequestProperty("User-Agent", "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/52.0.2743.116 Safari/537.36");
BufferedReader in = new BufferedReader(new InputStreamReader(connection.getInputStream()));
String line;
int lineCount = 0;
while ((line = in.readLine()) != null)
{
lineCount++;
}
System.out.println("http://" + baseURL + " = " + lineCount + " lines");
}
catch (Exception ex)
{
System.out.println("http://" + baseURL + " throws an error");
}
try
{
java.net.URL url = new java.net.URL("http://www." + baseURL);
java.net.URLConnection connection = url.openConnection();
connection.setRequestProperty("User-Agent", "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/52.0.2743.116 Safari/537.36");
BufferedReader in = new BufferedReader(new InputStreamReader(connection.getInputStream()));
String line;
int lineCount = 0;
while ((line = in.readLine()) != null)
{
lineCount++;
}
System.out.println("http://www." + baseURL + " = " + lineCount + " lines");
}
catch(Exception ex)
{
System.out.println("http://www." + baseURL + " throws an error");
}
try
{
java.net.URL url = new java.net.URL("https://" + baseURL);
java.net.URLConnection connection = url.openConnection();
connection.setRequestProperty("User-Agent", "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/52.0.2743.116 Safari/537.36");
BufferedReader in = new BufferedReader(new InputStreamReader(connection.getInputStream()));
String line;
int lineCount = 0;
while ((line = in.readLine()) != null)
{
lineCount++;
}
System.out.println("https://" + baseURL + " = " + lineCount + " lines");
}
catch (Exception ex)
{
System.out.println("https://" + baseURL + " throws an error");
}
try
{
java.net.URL url = new java.net.URL("https://www." + baseURL);
java.net.URLConnection connection = url.openConnection();
connection.setRequestProperty("User-Agent", "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/52.0.2743.116 Safari/537.36");
BufferedReader in = new BufferedReader(new InputStreamReader(connection.getInputStream()));
String line;
int lineCount = 0;
while ((line = in.readLine()) != null)
{
lineCount++;
}
System.out.println("https://www." + baseURL + " = " + lineCount + " lines");
}
catch (Exception ex)
{
System.out.println("https://www." + baseURL + " throws an error");
}
}
}
Здесь были результаты работы его на четырех различных веб-сайтах:
http://stackoverflow.com = 4205 lines
http://www.stackoverflow.com = 4205 lines
https://stackoverflow.com = 4205 lines
https://www.stackoverflow.com = 2 lines
http://qvc.com = 2438 lines
http://www.qvc.com = 2438 lines
https://qvc.com throws an error
https://www.qvc.com = 0 lines
http://facebook.com = 0 lines
http://www.facebook.com = 0 lines
https://facebook.com = 25 lines
https://www.facebook.com = 25 lines
http://google.com = 6 lines
http://www.google.com = 6 lines
https://google.com = 343 lines
https://www.google.com = 343 lines
Учитывая базовый URL, как «google.com», что правильный способ проверки, чтобы увидеть, какой формат следует использовать для веб-сайта?
Предположительно, ответ на http является перенаправлением на защищенный протокол https. –
проверьте код ответа. если вы получите перенаправление, то вы, вероятно, использовали неправильный формат. например 'www.stackoverflow.com' выдает 301 переадресацию только на' stackoverflow.com'. –
@MarcB - Да, я подумал, что это будет что-то вроде этого. Можете ли вы опубликовать его в качестве ответа? – Pikamander2