pracuję nad HttpURLConnection klasa, aby wykonać jakąś aktywność sieciową z mojej aplikacji. Więc zastanawiam się, jak HttpURLConnection działa wewnętrznie. Przeszedłem przez klasę i odkryłem metodę connect () zdefiniowaną jako streszczenie URLConnection.
Ale nie mogłem znaleźć połączyć() definicja metody. Więc jestem dość ciekawy, że jak HttpURLConnection połączyć się z serwerem.
Mój kod:
URL url = new URL("https://example.com");
connection = (HttpURLConnection) url.openConnection();
connection.setRequestProperty("Accept-Encoding", "identity");
connection.setRequestProperty("Authorization", basicAuth);
connection.setRequestProperty("Connection", "keep-alive");
connection.setRequestProperty("Content-type", "");
connection.setRequestProperty("User-Agent", "LibHttp/1.3.8");
connection.setRequestMethod("POST");
connection.connect(); // how it connects //
Proszę, zasugeruj mi jakieś rozwiązanie.
Odpowiedzi:
1 dla odpowiedzi № 1To bardzo szerokie pytanie. Spróbuję odpowiedzieć na to krótko.
Ilekroć mówimy, że robimy zapytanie http, myustanowić połączenie przez gniazdo z serwerem na porcie 80 (port 443 dla https). Następnie piszemy w gnieździe za protokołem http i czekamy, aż serwer odpowie.
Tutaj jest limit czasu, który możemy ustawić dla ustanowienia połączenia, a następnie ustawić czas, na który będziemy czekać na odpowiedź serwera.
Jest to połączenie synchronizacyjne, co oznacza, że wątek zostanie zablokowany do momentu, w którym serwer odpowie lub nastąpi przekroczenie limitu czasu.