Метод запроса HttpsURLConnection по умолчанию

#java #http #https

#java #http #https

Вопрос:

Какой метод запроса по умолчанию javax.net.ssl.HttpsURLConnection ? То есть по умолчанию используется GET или POST , если я явно не указываю какой-либо тип метода?

Какой тип метода используется в следующих кодах — GET? или POST?

 protected URLConnection createUrlConnection(URL url) throws IOException,
            GeneralSecurityException, LinkKeyStoreException
    {
        URLConnection urlConnection = url.openConnection();
        if (urlConnection instanceof HttpsURLConnection)
        {
            ((HttpsURLConnection) urlConnection).setHostnameVerifier(Constants.ACCEPT_ALL_HOSTS);
            ((HttpsURLConnection) urlConnection).setSSLSocketFactory(createSSLSocketFactory());
        }
        urlConnection.setConnectTimeout(Constants.URL_CONNECT_TIMEOUT);
        urlConnection.setReadTimeout(Constants.URL_READ_TIMEOUT);
        urlConnection.setRequestProperty("Range", "bytes="   totalBytesDownloaded   "-");
        urlConnection.connect();
        return urlConnection;
    }
  

Ответ №1:

Методом по умолчанию является GET , и Javadoc for HttpUrlConnection#setRequestMethod намекает на это:

Задайте метод для запроса URL, один из: ПОЛУЧИТЬ ЗАГОЛОВОК СООБЩЕНИЯ, ПОМЕСТИТЬ ТРАССИРОВКУ УДАЛЕНИЯ, являются законными, с учетом ограничений протокола. Методом по умолчанию является GET.

Комментарии:

1. Не применимо к этому Q, и javadoc не говорит, но если вы предоставляете тело запроса с .setDoOutput(true) и .getOutputStream() без явного изменения метода, он использует POST, поскольку HTTP запрещает body при GET .

2. @dave_thompson_085 Да … Я также видел это if утверждение в исходном коде.

Ответ №2:

HttpURLConnection по умолчанию использует метод GET.