Problema com HTTPClient

1 resposta
E

Olá,

Estou desenvolvendo um aplicativo para PDA usando HTTPClient.
O aplicativo se conecta ao servidor Tomcat para fazer o upload de
um arquivo XML.
O aplicativo funciona normalmente quando uso o Tomcat interno
do Netbeans, mas não funciona quando utilizo o Tomcat externo.
Neste caso dá o erro:

java.net.SocketException: Connection reset
        at java.net.SocketInputStream.read(SocketInputStream.java:168)
        at java.io.BufferedInputStream.fill(BufferedInputStream.java:183)
        at java.io.BufferedInputStream.read(BufferedInputStream.java:201)
        at org.apache.commons.httpclient.HttpParser.readRawLine(HttpParser.java:78)
        at org.apache.commons.httpclient.HttpParser.readLine(HttpParser.java:106)
        at org.apache.commons.httpclient.HttpConnection.readLine(HttpConnection.java:1116)
        at org.apache.commons.httpclient.HttpMethodBase.readStatusLine(HttpMethodBase.java:1973)
        at org.apache.commons.httpclient.HttpMethodBase.readResponse(HttpMethodBase.java:1735)
        at org.apache.commons.httpclient.HttpMethodBase.execute(HttpMethodBase.java:1098)
        at org.apache.commons.httpclient.HttpMethodDirector.executeWithRetry(HttpMethodDirector.java:398)
        at org.apache.commons.httpclient.HttpMethodDirector.executeMethod(HttpMethodDirector.java:171)
        at org.apache.commons.httpclient.HttpClient.executeMethod(HttpClient.java:397)
        at org.apache.commons.httpclient.HttpClient.executeMethod(HttpClient.java:323)
        at defeitos.Upload.salvarObservacoes(Upload.java:61)
        at defeitos.Inspecao.exportarObservacoesXML(Inspecao.java:1762)
        at defeitos.Inspecao.actionPerformed(Inspecao.java:2092)
        at java.awt.Button.processActionEvent(Button.java:382)
        at java.awt.Button.processEvent(Button.java:350)
        at java.awt.Component.dispatchEventImpl(Component.java:3615)
        at java.awt.Component.dispatchEvent(Component.java:3477)
        at java.awt.EventQueue.dispatchEvent(EventQueue.java:480)
        at java.awt.EventDispatchThread.pumpOneEventForHierarchy(EventDispatchThread.java:201)
        at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:151)
        at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:145)
        at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:137)
        at java.awt.EventDispatchThread.run(EventDispatchThread.java:100)

O aplicativo de upload é o seguinte:

import java.io.File;
import java.io.IOException;
import org.apache.commons.httpclient.HttpClient;
import org.apache.commons.httpclient.methods.PostMethod;
import org.apache.commons.httpclient.methods.multipart.FilePart;
import org.apache.commons.httpclient.methods.multipart.MultipartRequestEntity;
import org.apache.commons.httpclient.methods.multipart.Part;

public class Upload
{
  private int status = 0;
  
  private String url = "http://localhost:8080/ServicoHTTP/uploadObservacoes";
  
  private void setStatus(int s)
  {
    status = s;
  }
  
  public int getStatus()
  {
    return status;
  }
  
  public void salvarObservacoes(String nomeInsp, String statusInsp)
  {
    int statusExec = 0;
    
    // Parâmetros da URL
    url = url + "?inspecao=" + nomeInsp + "&status=" + statusInsp;
    
    try
    {
      File arq = new File("transfer/observacoes.xml");
      if (!arq.exists())
      {
        System.out.println("ERRO: Arquivo observacoes.xml não encontrado!");
        setStatus(-1);
        return;
      }
      
      PostMethod arqPost = new PostMethod(url);

      Part[] parts = {
        new FilePart(arq.getName(), arq)
      };
      arqPost.setRequestEntity(new MultipartRequestEntity(parts, arqPost.getParams()));
      
      HttpClient client = new HttpClient();
      
      statusExec = client.executeMethod(arqPost);
      
      setStatus(statusExec);
    }
    catch(IOException e)
    {
      e.printStackTrace();
    }
  }
}

O código do servlet chamado é:

public class UploadObservacoes extends HttpServlet
{
  private Utilidades util = null;
  private Connection bd = null;
  
  protected void processRequest(HttpServletRequest request, HttpServletResponse response)
  {
    String fileName = null;
    
    prepararProcessamento();    
    
    // Recuperar parâmetros
    String nomeInsp = request.getParameter("inspecao");
    String statInsp = request.getParameter("status");
    
    if (ServletFileUpload.isMultipartContent(request))
    {
      ServletFileUpload arq = new ServletFileUpload(new DiskFileItemFactory());
      List arqItems = null;

      try
      {
        arqItems = arq.parseRequest(request);
      }
      catch (FileUploadException e)
      {
        util.mostrarErro(e);
      }

      String optionalFileName = "";
      FileItem fileItem = null;

      Iterator it = arqItems.iterator();
      while (it.hasNext())
      {
        FileItem fileItemTemp = (FileItem)it.next();
        if (fileItemTemp.isFormField())
        {
          String name = fileItemTemp.getFieldName();
          String value = fileItemTemp.getString();
          if (fileItemTemp.getFieldName().equals("filename"))
            optionalFileName = fileItemTemp.getString();
        }
        else
          fileItem = fileItemTemp;
      }

      if (fileItem != null)
      {
        fileName = fileItem.getName();
        String contentType = fileItem.getContentType();
        String fieldName= fileItem.getFieldName();
        long fileSize = fileItem.getSize();
        if (fileItem.getSize() > 0)
        {
          if (optionalFileName.trim().equals(""))
            fileName = FilenameUtils.getName(fileName);
          else
            fileName = optionalFileName;

          String path = request.getPathInfo();
          HttpSession session = request.getSession();
          String raiz = session.getServletContext().getRealPath("/");

          fileName = raiz + fileName;
          File saveTo = new File(fileName);
          try
          {
            fileItem.write(saveTo);
          }
          catch (Exception e)
          {
            util.mostrarErro(e);
          }
        }
      }

    salvarObservacoesXML(fileName, nomeInsp, statInsp);
    }
  }
...
}

Alguem tem alguma sugestão para resolver o problema? Obrigado,

senne

1 Resposta

E

a resposta é meio simples para este caso…

org.apache.commons

confira os jars desse pacote se vc tem eles no tomcat externo
aparentemente pela descrição do erro desconfio que seja isso :wink:

[]´s

Criado 23 de novembro de 2007
Ultima resposta 25 de nov. de 2007
Respostas 1
Participantes 2