Como faço para remover HTTP do Java?

Estou tentando executar um PURGE com HttpUrlConnection como este:

private void callVarnish(URL url) {
    HttpURLConnection conn = null;

    try {
        conn = (HttpURLConnection) url.openConnection();
        conn.setRequestMethod(PURGE_METHOD);
        conn.setDoOutput(true);
        conn.setInstanceFollowRedirects(true);
        conn.setRequestProperty("Host", "www.somehost.com");
        conn.connect();
        System.out.print(conn.getResponseCode() + " " + conn.getResponseMessage());
     }
     catch (Exception e) {
         log.error("Could not call varnish: " + e);
     } finally {
         if (conn != null) {
             conn.disconnect();
         }
     }
}

Mas eu estou recebendo:

08:56:31,813 ERROR [VarnishHandler] Could not call varnish: java.net.ProtocolException: Invalid HTTP method: PURGE

Com o curl, não há problema:

curl -I -X PURGE -H "Host: www.somehost.com" someurl

HTTP/1.1 404 Not in cache.
Server: Varnish
Content-Type: text/html; charset=utf-8
Retry-After: 5
Content-Length: 401
Accept-Ranges: bytes
Date: Thu, 18 Oct 2012 06:40:19 GMT
X-Varnish: 1611365598
Age: 0
Via: 1.1 varnish
Connection: close
X-Cache: MISS

Então, como faço isso? Preciso me curvar a partir do Java ou há alguma outra biblioteca que eu possa usar?

Resposta 1

Você pode usar a biblioteca HttpClient do Apache: http://hc.apache.org/httpcomponents-client-ga/

Você pode usar BasicHttpRequest ou implementar sua própria classe HttpPurge estendendo HttpRequestBase .

Você pode encontrar um guia de início rápido aqui: http://hc.apache.org/httpcomponents-client-ga/quickstart.html

Exemplo:

DefaultHttpClient httpclient = new DefaultHttpClient();
BasicHttpRequest httpPurge = new BasicHttpRequest("PURGE", "www.somehost.com") 
HttpResponse response = httpclient.execute(httpPurge);
Resposta: 2

Eu tenho trabalhado em uma tarefa na qual preciso ler palavras de um arquivo e encontrar a palavra mais longa e verificar quantas subpalavras contêm nessa palavra mais longa? isso deve funcionar para todas as palavras ...

Estamos no processo de migração do MySql para o MariaDB devido a motivos de licenciamento / uso comercial. Substituímos com êxito o jar do conector MySql pelo jar do cliente MariaDB (primeira alteração) e estamos ...

Estou tentando enviar um email usando o servidor de email da minha empresa. Mas estou recebendo a seguinte exceção Causada por: com.sun.mail.smtp.SMTPSendFailedException: 530 5.7.1 O cliente não foi autenticado ...

Estou tentando depurar o aplicativo java no Visual Studio Code e obtendo o seguinte erro: "Erro: spawn jdb ENOENT". O código Vs está sugerindo a atualização do meu launch.json, que possui o seguinte: {"...