Problemas com espaço em branco em requisição HTTP

3 respostas
Valter_Henrique

Galera, é o seguinte, tenho um banco de dados MySQL que possui alguns cadastros, e eu criei uma servlet para atualizar um campo neste banco, já que tenho que acessar essa servlet atraves de uma URL.
Ficando dessa forma:

http://localhost:8080/ER_WEB/FindConsumerCity?material=Aluminium&city=RiodeJaneiro&state=RJ&country=Brazil
Funciona tranquilo já que '&city=RiodeJaneiro' esta tudo junto, mas agora se eu deixar '&city=Rio de Janeiro', ocorre uma exceção e eu não sei como fazer de modo que a requisição ocorra normamente. Trecho do código em questão:
System.out.println("URL >>> " + URL);
            try {
                   connection = (HttpConnection) Connector.open(URL);
                   connection.setRequestMethod(HttpConnection.GET);
                  
                  if (connection.getResponseCode() == HttpConnection.HTTP_OK) {
                       sValidateServlet = obServices.outputServlet(connection);
                       System.out.println("SAIDA >>> " + sValidateServlet);
                  }
                  connection.close();
                  } catch (Exception e) {
                  obDisplayMIDlet.infoMessage("Error", "Connection failure", "Error", list);
                  }
Saida:
URL >>> http://localhost:8080/ER_WEB/UpdateHasSupplierCity?material=Aluminium&city=Rio de Janeiro&state=RJ&country=Brazil
Alguém poderia me dar uma dica de como fazer funcionar tanto para dados com espaços em branco ou sem espaços branco?

Valeu galera.

3 Respostas

peczenyj

Vc precisa fazer um processo de urlencoding - no caso de espaço em branco o correto deveria ser algo como

/MinhaPagina?coisa=Uma+Frase+Com+Espacos

ou seja, com + no lugar do espaço ou o equivalente ao valor ASCII precedido por %

/MinhaPagina?coisa=Uma%20Frase%20Com%20Espacos

Valter_Henrique

peczenyj:
Vc precisa fazer um processo de urlencoding - no caso de espaço em branco o correto deveria ser algo como

/MinhaPagina?coisa=Uma+Frase+Com+Espacos

ou seja, com + no lugar do espaço ou o equivalente ao valor ASCII precedido por %

/MinhaPagina?coisa=Uma%20Frase%20Com%20Espacos


Então meu velho, eu fiz isso também, soh que essa url vai para um servlet que pegar os campos, city, state, country, e eh ai que esta dando erro entendeu?

Eu mando uma url fixa, com os espaço com %20 no lugar, porém ainda volta com erro…

Valter_Henrique

cara, muito obrigado, valeu mesmo, como estou trabalhando em j2me, ele não possui uma função encoding, então peguei uma função que faz isso que você disse.
Ficando dessa forma:

public String encodeString(String palavra) {
        char one;
        StringBuffer n = new StringBuffer(palavra.length());
        for (int i = 0; i < palavra.length(); i++) {
            one = palavra.charAt(i);
            switch (one) {
                case ' ':
                    n.append('%');
                    n.append('2');
                    n.append('0');
                    break;

                default:
                    n.append(one);
            }
        }
        return n.toString();
    }

Valeu meu velho.

Criado 9 de março de 2010
Ultima resposta 9 de mar. de 2010
Respostas 3
Participantes 2