PAGUE 6 MESES
LEVE 12 MESES
GARANTIR DESCONTO

Fórum Como ler site (código HTML) externo ao meu domínio com as classes do JDK (ou seja, sem utilizar o HttpClient da apache, ou recurso externo ao JDK) #470593

19/02/2014

0

Eu sei que existe o HttpClient e outras libs para ler site (código HTML) em programas java. Mas eu quero saber como executar essa tarefa apenas com as classes que já vêm no JDK.

Vejam meu código.

private String getPhoneCompany(String phoneNumber) throws RuntimeException{
    String response="";
    URL url=null;
    //
    try{
      url=new URL("http://www.zipmail.com.br");
    }
    catch(Exception e){
      throw new RuntimeException("Invalid/Incorrect URL.",e);
    }
    //
    HttpURLConnection urlConnection=null;
    try{
      urlConnection=(HttpURLConnection)url.openConnection();
      urlConnection.setDoInput(true);
      urlConnection.setDoOutput(true);
      urlConnection.setUseCaches(true);
      urlConnection.setReadTimeout(10000);
      urlConnection.connect();
    }
    catch(Exception e){
      throw new RuntimeException("Error connecting to the address ["+url.toString()+"].",e);
    }    
    //
    try{
      BufferedReader reader=new BufferedReader(new InputStreamReader(urlConnection.getInputStream()));  
      String line=null;  
      while((line=reader.readLine())!=null){  
        response+=line;
      }  
      reader.close();
    }
    catch(Exception e){
      throw new RuntimeException("Error getting response from address ["+url.toString()+"].",e);
    }
    //
    urlConnection.disconnect();
    //
    return response;
  }


O código até conecta, eo consigo ler o content type, etc, mas quando tento ler o código html (conseguir um InputStream) é lançada a exceção:

java.lang.RuntimeException: Error getting response from address [http://www.zipmail.com.br].
    at org.jacusoft.operadoracelular.servlet.OperadoraCelularServlet.getPhoneCompany(OperadoraCelularServlet.java:173)
    at org.jacusoft.operadoracelular.servlet.OperadoraCelularServlet.doGet(OperadoraCelularServlet.java:74)
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:687)
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:790)
    at org.apache.catalina.core.StandardWrapper.service(StandardWrapper.java:1682)
    at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:318)
    at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:160)
    at org.apache.catalina.core.StandardPipeline.doInvoke(StandardPipeline.java:734)
    at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:673)
    at com.sun.enterprise.web.WebPipeline.invoke(WebPipeline.java:99)
    at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:174)
    at org.apache.catalina.connector.CoyoteAdapter.doService(CoyoteAdapter.java:357)
    at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:260)
    at com.sun.enterprise.v3.services.impl.ContainerMapper.service(ContainerMapper.java:188)
    at org.glassfish.grizzly.http.server.HttpHandler.runService(HttpHandler.java:191)
    at org.glassfish.grizzly.http.server.HttpHandler.doHandle(HttpHandler.java:168)
    at org.glassfish.grizzly.http.server.HttpServerFilter.handleRead(HttpServerFilter.java:189)
    at org.glassfish.grizzly.filterchain.ExecutorResolver$9.execute(ExecutorResolver.java:119)
    at org.glassfish.grizzly.filterchain.DefaultFilterChain.executeFilter(DefaultFilterChain.java:288)
    at org.glassfish.grizzly.filterchain.DefaultFilterChain.executeChainPart(DefaultFilterChain.java:206)
    at org.glassfish.grizzly.filterchain.DefaultFilterChain.execute(DefaultFilterChain.java:136)
    at org.glassfish.grizzly.filterchain.DefaultFilterChain.process(DefaultFilterChain.java:114)
    at org.glassfish.grizzly.ProcessorExecutor.execute(ProcessorExecutor.java:77)
    at org.glassfish.grizzly.nio.transport.TCPNIOTransport.fireIOEvent(TCPNIOTransport.java:838)
    at org.glassfish.grizzly.strategies.AbstractIOStrategy.fireIOEvent(AbstractIOStrategy.java:113)
    at org.glassfish.grizzly.strategies.WorkerThreadIOStrategy.run0(WorkerThreadIOStrategy.java:115)
    at org.glassfish.grizzly.strategies.WorkerThreadIOStrategy.access$100(WorkerThreadIOStrategy.java:55)
    at org.glassfish.grizzly.strategies.WorkerThreadIOStrategy$WorkerThreadRunnable.run(WorkerThreadIOStrategy.java:135)
    at org.glassfish.grizzly.threadpool.AbstractThreadPool$Worker.doWork(AbstractThreadPool.java:564)
    at org.glassfish.grizzly.threadpool.AbstractThreadPool$Worker.run(AbstractThreadPool.java:544)
    at java.lang.Thread.run(Thread.java:744)
Caused by: java.io.IOException: Server returned HTTP response code: 401 for URL: http://tjro86/B0000D0000N0002F0000S0000R0004/http://www.zipmail.com.br/
    at sun.net.www.protocol.http.HttpURLConnection.getInputStream(HttpURLConnection.java:1626)
    at org.jacusoft.operadoracelular.servlet.OperadoraCelularServlet.getPhoneCompany(OperadoraCelularServlet.java:165)


Alguém pode me ajudar a resolver isso e ler o código html da página?
Marcelo Sousa

Marcelo Sousa

Responder

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar