[RESOLVIDO] Requisição Http, user e password NO-IP

1 resposta
denisbenjamim

Bom tarde Galera!

  • To precisando de uma ajuda nesse pequeno problema. Realizei as requisições via HTTP a api no no-ip, a fim de atualizar o serviço. Quando eu tento via browser funciona mas quando faço a requisição pela minha classe, recebo uma mensagem de erro.

  • Essa é a pagina que é fornecida para que seja feita a requisição pelo no-ip

http://username:[email removido]/nic/update?hostname=mytest.testdomain.com&myip=1.2.3.4
  • Posso estar errado mas acredito que seja por causa da Syntaxe dessa pagina começar com o nome e usuario de senha, abaixo o erro
java.net.MalformedURLException: no protocol

1 Resposta

denisbenjamim

Bom consegui Resolver. no-ip usa a codificação Base64 , mas esse é só metade da resolução, pelo o que andei pesquisando o dia inteiro Java nao consegue nativamente tratar certas sintaxe de URI, por sinal a recomendada é algo semelhante a isso <scheme>://<authority><path>?<query>. Porem mais especificamente na parte de <authority>, a qual nao recomendam a sintaxe user:password no lugar da authority, devido a utilizar texto puro é claro que se voce souber em que base esta consegue decodificar.

- Bem abaixo a solução que encontrei

private static String userPassowrd;
 private static String password;
 private static String user;
 private static String dominio="seuhost.no-ip.org";

//Converte na base64 e transforma em String
user = new String("seuloginr".getBytes("x-base64"));
password = new String("suasenha".getBytes("x-base64"));
userPassowrd = new String((user+":"+password).getBytes("x-base64"));

//Define como Authenticador padrao irá reagir ao ser requisitado o password
Authenticator.setDefault(new Authenticator() {
      @Override
       protected PasswordAuthentication getPasswordAuthentication() {
             return new PasswordAuthentication(user, password.toCharArray());
       }           
});

URL url1 = new URL("http://"+userPassowrd+"@dynupdate.no-ip.com/nic/update?hostname="+dominio);
Criado 31 de maio de 2012
Ultima resposta 31 de mai. de 2012
Respostas 1
Participantes 1