Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
936 connectés 

  FORUM HardWare.fr
  Programmation
  Java

  comment passer un proxy en s'authentifiant ---> erreur 407

 


 Mot :   Pseudo :  
 
 Page :   1  2
Page Précédente
Auteur Sujet :

comment passer un proxy en s'authentifiant ---> erreur 407

n°668255
supertimor​2k
Posté le 09-03-2004 à 10:17:39  profilanswer
 

ma classe doit télécharger un site à travers un proxy mais je n'arrive pas à le passer.
 

Citation :


import java.io.*;
import java.net.*;
 
public class UnAttrapeURL
{
 URLConnection saCon;
   String id="sd16v:jzkjzz";  
   
 public UnAttrapeURL(String telURL)
 {
  //définition du proxy pour le système
  System.setProperty("proxySet","true" );
  System.setProperty("http.proxyHost","192.0.2.1" );
  System.setProperty("http.proxyPort","3128" );  
    String encodedPassword = base64Encode(id);
  saCon.setRequestProperty( "Proxy-Authorization", encodedPassword );
     
    //System.setProperty("http.proxyUser","sd16v" );
  //System.setProperty("http.proxyPassword","jzkjzz" );  
 
    //définition des paramètres de l'URLConnection
  try{saCon=(new URL(telURL)).openConnection();
     saCon.setDoInput(true);
     saCon.setDoOutput(false);
     saCon.setRequestProperty("Proxy-Authorization", encodedPassword);
     saCon.connect();}
    catch(Exception e){e.printStackTrace();}
   
  //définition des flux
  InputStream in=null;
  OutputStream out=null;
  try{in = saCon.getInputStream();
   out=new FileOutputStream("toto" );}
  catch(Exception e){e.printStackTrace();}
   
  //boucle de lecture des données
  byte[] tampon = new byte[4096];
  int octets_lus;
  try{while((octets_lus=in.read(tampon)) != -1)
    out.write(tampon,0,octets_lus);}
  catch (Exception e){e.printStackTrace();}
   
  //fermeture des flux
  try{in.close();
   out.close();}  
  catch (Exception e){e.printStackTrace();}
 }
 
 public static void main(String[] telsArgs)
 {
  new UnAttrapeURL("http://www.wanadoo.fr" );
 }
}


 
j'ai une levée d'exception erreur407 dans le try qd je fais saCon.getInputStream(). J'ai trouvé sur le net qu'il fallait encodé en base64 le login et le password, c'est obligatoire ?
 
si oui, pouvez vous m'indiquer ou trouver une class qui encode en base64 parce que je n'en ai pas trouvée.
 
 
merci

mood
Publicité
Posté le 09-03-2004 à 10:17:39  profilanswer
 

n°668261
benou
Posté le 09-03-2004 à 10:25:40  profilanswer
 
n°668277
uriel
blood pt.2
Posté le 09-03-2004 à 10:36:50  profilanswer
 

en fait tu es pas le premier, lis ce topic :jap:
http://forum.hardware.fr/forum2.ph [...] 0&subcat=0
 
edit: pour la Base 64, je l'ai fais avec une classe de Sun


Message édité par uriel le 09-03-2004 à 10:37:50

---------------
IVG en france
n°668289
supertimor​2k
Posté le 09-03-2004 à 10:54:09  profilanswer
 

oui mais j'ai deja cherché sur le site de sun base64Encoder mais je ne la trouve pas !!!
c vraiment floue tt ca :s
 
si vous avez ette classe, vous pouvez me la mettre sur un ftp svp?

n°668295
benou
Posté le 09-03-2004 à 10:59:08  profilanswer
 

uriel a écrit :

edit: pour la Base 64, je l'ai fais avec une classe de Sun  


mais c'est super mal ca  [:mlc2]


---------------
ma vie, mon oeuvre - HomePlayer
n°668296
benou
Posté le 09-03-2004 à 10:59:28  profilanswer
 

supertimor2k a écrit :

si vous avez ette classe, vous pouvez me la mettre sur un ftp svp?


 :heink: il te va pas le lien que je t'ai filé ?


---------------
ma vie, mon oeuvre - HomePlayer
n°668303
uriel
blood pt.2
Posté le 09-03-2004 à 11:06:23  profilanswer
 

benou a écrit :


mais c'est super mal ca  [:mlc2]  


 
pourquoi :??:  
 
j'ai pris celle ci sun.misc.BASE64Encoder  et ca marche tres bien  [:spamafote]


---------------
IVG en france
n°668308
benou
Posté le 09-03-2004 à 11:11:14  profilanswer
 

uriel a écrit :


pourquoi :??:  
 
j'ai pris celle ci sun.misc.BASE64Encoder  et ca marche tres bien  [:spamafote]  


c'est des packages cachés auxquels tu n'es pas sensé faire référence : rien ne garantit que ces classes seront (ou ont été) présentes dans les versions futures (ou passées) de java.
 
Sans dire que si on essaye de faire tourner ton prog sur une autre jvm que celle de Sun il va planter.
 
Bref, c'est une très mauvaise idée


Message édité par benou le 09-03-2004 à 11:11:49

---------------
ma vie, mon oeuvre - HomePlayer
n°668313
uriel
blood pt.2
Posté le 09-03-2004 à 11:13:21  profilanswer
 

ok, je le note, mais comme là c'etait juste pour moi pour un projet perso qui tourne sur ma machine, ca va, mais merci :jap:
 
mais ca veut dire quoi, ce sont des packages cachés, on trouve des references à ce package partout sur le net :/
 
pourquoi integré un package que tout le monde peut utiliser, si personne doit le faire  [:spamafote]


Message édité par uriel le 09-03-2004 à 11:14:46

---------------
IVG en france
n°668320
benou
Posté le 09-03-2004 à 11:18:40  profilanswer
 

uriel a écrit :

mais ca veut dire quoi, ce sont des packages cachés, on trouve des references à ce package partout sur le net :/


C'est des packages qui servent à l'implémentations de sun de l'API java.
 
A quoi ca sert qu'il y ait une API standard si c'est pour utiliser des implémentations spécifiques derrière ? :/
 
C'est des packages cachés, ca veut dire que tu n'es pas sensé savoir qu'ils existent. D'ailleur, tu ne trouveras pas de javadoc ni les sources de ces classes parce que c'est des classes de sun. Des classes internes à leur implémentation java.  
 
Et c'est pas parce que plein de gens font des conneries sur le net qu'il faut faire les même qu'eux :o
 
Surtout pour un truc aussi concon qu'un encodage Base64 ...
 
Y a des truc pour lesquels t'es plus ou moins obligé (ex : compilation dynamique), mais pour du base 64, là je dis non :o


---------------
ma vie, mon oeuvre - HomePlayer
mood
Publicité
Posté le 09-03-2004 à 11:18:40  profilanswer
 

n°668329
uriel
blood pt.2
Posté le 09-03-2004 à 11:22:55  profilanswer
 

[:sisicaivrai] ok, jle ferais plus...


---------------
IVG en france
n°668336
Taiche
(╯°□°)╯︵ ┻━┻
Posté le 09-03-2004 à 11:26:40  profilanswer
 

benou a écrit :


Surtout pour un truc aussi concon qu'un encodage Base64 ...


C'est pour ça que je trouve immensément débile de foutre ça en package sun et pas en java.util.


---------------
Everyone thinks of changing the world, but no one thinks of changing himself  |  It is the peculiar quality of a fool to perceive the faults of others and to forget his own  |  Early clumsiness is not a verdict, it’s an essential ingredient.
n°668348
uriel
blood pt.2
Posté le 09-03-2004 à 11:41:24  profilanswer
 

Taiche a écrit :


C'est pour ça que je trouve immensément débile de foutre ça en package sun et pas en java.util.


 
[:benou_+1]


---------------
IVG en france
n°668362
benou
Posté le 09-03-2004 à 11:52:52  profilanswer
 

Taiche a écrit :


C'est pour ça que je trouve immensément débile de foutre ça en package sun et pas en java.util.


Le fait que ce soit dans un package sun t'es^même pas sensé le savoir ... maintenant tu peux trouver dommage qu'il n'aient pas ajouter une classe utilitaire pour faire ca dans l'api, mais c'est un autre problème ...


---------------
ma vie, mon oeuvre - HomePlayer
n°668365
benou
Posté le 09-03-2004 à 11:54:21  profilanswer
 

uriel a écrit :

[:sisicaivrai] ok, jle ferais plus...


sinon panpan kuku :o


---------------
ma vie, mon oeuvre - HomePlayer
n°668382
Taiche
(╯°□°)╯︵ ┻━┻
Posté le 09-03-2004 à 12:10:30  profilanswer
 

benou a écrit :


Le fait que ce soit dans un package sun t'es^même pas sensé le savoir ... maintenant tu peux trouver dommage qu'il n'aient pas ajouter une classe utilitaire pour faire ca dans l'api, mais c'est un autre problème ...


Ouais 'fin faut arrête les abus, aussi. Encoder/décoder du Base64, c'est pas THE algo de le mort à protéger coûte que coûte ; qu'ils cachent des conneries genre HTTPS ou gestion de certificats j'veux bien comprendre, m'enfin le Base64... [:kiki] En plus y a pas d'appel natif (en tout cas j'espère pour eux [:xx_xx]) donc franchement, j'vois absolument pas l'intérêt de cacher une telle classe.
Enfin, que je sois pas censé le savoir, j'en ai rien à battre ; non seulement c'est un secret de polichinelle à 2 balles mais en plus ça veut strictement rien dire de cacher un truc pareil [:spamafote]


Message édité par Taiche le 09-03-2004 à 12:10:51

---------------
Everyone thinks of changing the world, but no one thinks of changing himself  |  It is the peculiar quality of a fool to perceive the faults of others and to forget his own  |  Early clumsiness is not a verdict, it’s an essential ingredient.
n°668384
supertimor​2k
Posté le 09-03-2004 à 12:12:26  profilanswer
 

benou le lien que tu m'as filé est bon mais je ne vois pas ou la telecharger....
je regarde à nouveau :)

n°668412
benou
Posté le 09-03-2004 à 13:05:39  profilanswer
 

Taiche a écrit :

Enfin, que je sois pas censé le savoir, j'en ai rien à battre ; non seulement c'est un secret de polichinelle à 2 balles mais en plus ça veut strictement rien dire de cacher un truc pareil [:spamafote]


t'as pas compris ce que je voulais dire.
Ce que je dis c'est que la calsse Base 64 répond à un besoin interne de l'implémentation de sun.  
 
le truc c'est pas de cacher ou de ne pas cacher c'est de définir une API. L'API, en l'état n'offre pas de possibilité de faire du Base64. C'est contre ce point là que vous pouvez éventuellemnt raller.
 
Mais ca n'a rien à voir (si on peut dire) avec le fait qu'il y ait une classe qui fasse ca dans un des jars du jre. Je suis sûr qu'il y a plein d'autres classes dans ces jars qui sont bein pratiques. Mais c'est pas parce que quelqu'un a développé quelque part une classe pratique qu'elle doit forcément être dans l'API standard. Le problème c'est pas de cacher ou non : la définition de l'API ne se fait pas en fonction des implémentations de l'API et des classes qu'elle peut éventuellement contenir.
 
je sais pas si je vais arriver à me faire comprendre ...
 
 
pour le download de du base64 made in apache : http://jakarta.apache.org/commons/codec/ (rubrique download)


---------------
ma vie, mon oeuvre - HomePlayer
n°668440
Taiche
(╯°□°)╯︵ ┻━┻
Posté le 09-03-2004 à 13:36:48  profilanswer
 

benou a écrit :


je sais pas si je vais arriver à me faire comprendre ...


Si j'pige bien, sauf que Base64 est quand même quelque chose de super utilisé et que quand on fournit des moyens de passer les proxies, on va jusqu'au bout. Sans Base64, t'es mort. Idem, dans une moindre mesure, pour passer du binaire dans du XML. Pareil pour javamail et les fichiers attachés.
Bref, la classe étant justement implémentée en interne, ça fait un peu pouilleux et pas sérieux.


---------------
Everyone thinks of changing the world, but no one thinks of changing himself  |  It is the peculiar quality of a fool to perceive the faults of others and to forget his own  |  Early clumsiness is not a verdict, it’s an essential ingredient.
n°668444
uriel
blood pt.2
Posté le 09-03-2004 à 13:39:06  profilanswer
 

c'est surtout un truc tres util, et regulierement utilisé, il est fait mais on ne peut pas prendre celui de l'API de Sun parce qu'il est pas fait pour ca :/
 
logique que je comprends pas mais bon, pour quoi ne pas rendre toute les classes Sun accessible, ou au moins utilisable... comprends pas


---------------
IVG en france
n°668446
Taiche
(╯°□°)╯︵ ┻━┻
Posté le 09-03-2004 à 13:39:39  profilanswer
 

uriel a écrit :

c'est surtout un truc tres util, et regulierement utilisé, il est fait mais on ne peut pas prendre celui de l'API de Sun parce qu'il est pas fait pour ca :/
 
logique que je comprends pas mais bon, pour quoi ne pas rendre toute les classes Sun accessible, ou au moins utilisable... comprends pas


Comment j't'ai grillaid tarace :o


---------------
Everyone thinks of changing the world, but no one thinks of changing himself  |  It is the peculiar quality of a fool to perceive the faults of others and to forget his own  |  Early clumsiness is not a verdict, it’s an essential ingredient.
n°668450
uriel
blood pt.2
Posté le 09-03-2004 à 13:40:53  profilanswer
 

Taiche a écrit :


Comment j't'ai grillaid tarace :o


 
j'aime bien en rajouter une couche :O


---------------
IVG en france
n°668454
darklord
You're welcome
Posté le 09-03-2004 à 13:45:50  profilanswer
 

stack ta race :o

n°668467
benou
Posté le 09-03-2004 à 13:56:15  profilanswer
 

uriel a écrit :

pour quoi ne pas rendre toute les classes Sun accessible, ou au moins utilisable...  


mais  :sweat:


---------------
ma vie, mon oeuvre - HomePlayer
n°668471
uriel
blood pt.2
Posté le 09-03-2004 à 13:57:08  profilanswer
 

benou a écrit :


mais  :sweat:  


 
je sais bien qu'elles sont accessible, je disais pourquoi ne pas les integrer dans l'API normalement :O


---------------
IVG en france
n°668475
benou
Posté le 09-03-2004 à 13:59:56  profilanswer
 

uriel a écrit :


pourquoi ne pas les integrer dans l'API normalement :O


Parce que une API c'est pas un foure-tout [:spamafote]
 
mais je suis d'accord que le Base64 pourrait être présent, tout comme l'est le URLEncoder ...
 
Pour répondre à Taiche, je me souviens d'un topic où quelqu'un avait donné du code pour s'authentifier auprès d'un proxy sans utiliser de base64 en utilisant des classes de l'API ...


---------------
ma vie, mon oeuvre - HomePlayer
n°668480
uriel
blood pt.2
Posté le 09-03-2004 à 14:02:21  profilanswer
 

je serais curieux de le retrouver, je m'en sert pour passer en https avec .htacess, et le mot de passe est en Base64 :??:


---------------
IVG en france
n°668485
Taiche
(╯°□°)╯︵ ┻━┻
Posté le 09-03-2004 à 14:06:14  profilanswer
 

+12 :o


---------------
Everyone thinks of changing the world, but no one thinks of changing himself  |  It is the peculiar quality of a fool to perceive the faults of others and to forget his own  |  Early clumsiness is not a verdict, it’s an essential ingredient.
n°668493
benou
Posté le 09-03-2004 à 14:09:36  profilanswer
 

j'ai checrhé, je le retrouve pas :(


---------------
ma vie, mon oeuvre - HomePlayer
n°668505
benou
Posté le 09-03-2004 à 14:15:21  profilanswer
 
n°668507
uriel
blood pt.2
Posté le 09-03-2004 à 14:17:15  profilanswer
 


 

Code :
  1. writer.write("Proxy-Authorization: Basic "
  2.              + new sun.misc.BASE64Encoder().encode(
  3.                authentication.getBytes())
  4.              + "\r\n\r\n" );


 
[:ban]


---------------
IVG en france
n°668511
Taiche
(╯°□°)╯︵ ┻━┻
Posté le 09-03-2004 à 14:19:16  profilanswer
 

[:grinking]


---------------
Everyone thinks of changing the world, but no one thinks of changing himself  |  It is the peculiar quality of a fool to perceive the faults of others and to forget his own  |  Early clumsiness is not a verdict, it’s an essential ingredient.
n°668604
benou
Posté le 09-03-2004 à 15:08:57  profilanswer
 


t'as lu un peu avant de faire un ctrl f "base64" ? [:kiki]


---------------
ma vie, mon oeuvre - HomePlayer
n°668609
uriel
blood pt.2
Posté le 09-03-2004 à 15:10:27  profilanswer
 

benou a écrit :


t'as lu un peu avant de faire un ctrl f "base64" ? [:kiki]


 
oui, et justement, il propose cette solution  [:spamafote]  

Citation :


My solution is to roll out my own implementation of the HTTP protocol. In its simplest form, a GET request looks like the following listing:
 
String url = "http://www.marchal.com/",
       proxy = "proxy.mydomain.com",
       port = "8080",
       authentication = "usr:pwd";
URL server = new URL(url);
Socket socket = new Socket(proxy,port);
Writer writer = new OutputStreamWriter(socket.getOutputStream(),
                                       "US-ASCII" );
writer.write("GET " + server.toExternalForm() + " HTTP/1.0\r\n" );
writer.write("Host: " + server.getHost() + "\r\n" );
writer.write("Proxy-Authorization: Basic "
             + new sun.misc.BASE64Encoder().encode(
               authentication.getBytes())
             + "\r\n\r\n" );
writer.flush();
BufferedReader reader = new BufferedReader(new InputStreamReader(
                            socket.getInputStream(),"US-ASCII" ));
String line = reader.readLine();
if(line != null && line.startsWith("HTTP/" ))
{
   int sp = line.indexOf(' ');
   String status = line.substring(sp + 1,sp + 4);
   if(status.equals("200" ))
   {
      while(line.length() != 0)
         line = reader.readLine();
      readResponse(reader);
   }
   else
      throw new FileNotFoundException("Host reports error " +
                                       status);
}
else
   throw new IOException("Bad protocol" );
reader.close();
writer.close();
socket.close();
 
 
 
Notice that the proxy username and password are given as username:password and are later encoded in base 64. For a complete description of the HTTP protocol, turn to http://www.ietf.org/rfc/rfc2616.txt.


---------------
IVG en france
n°668613
benou
Posté le 09-03-2004 à 15:11:53  profilanswer
 

uriel a écrit :


oui, et justement, il propose cette solution  


mais ... regarde juste au dessus  :cry:
 
edit : ca :

Citation :

public class SimpleAuthenticator
   extends Authenticator
{
   private String username,
                  password;
                     
   public SimpleAuthenticator(String username,String password)
   {
      this.username = username;
      this.password = password;
   }
   
   protected PasswordAuthentication getPasswordAuthentication()
   {
      return new PasswordAuthentication(
             username,password.toCharArray());
   }
}
 
Next, it must register the authenticator through Authenticator.setDefault(). If we adapt the previous code sample to use Authenticator, it looks like this:
 
String url = "http://www.marchal.com/",
       proxy = "proxy.mydomain.com",
       port = "8080",
       username = "usr",
       password = "pwd";
Authenticator.setDefault(new SimpleAuthenticator(
                        username,password));
URL server = new URL(url);
Properties systemProperties = System.getProperties();
systemProperties.setProperty("http.proxyHost",proxy);
systemProperties.setProperty("http.proxyPort",port);
HttpURLConnection connection = (
    HttpURLConnection)server.openConnection();
connection.connect();
InputStream in = connection.getInputStream();
readResponse(in);
 


Message édité par benou le 09-03-2004 à 15:12:28

---------------
ma vie, mon oeuvre - HomePlayer
n°668616
uriel
blood pt.2
Posté le 09-03-2004 à 15:14:37  profilanswer
 

je capte pas comment ce truc peut fonctionner :/


---------------
IVG en france
n°668623
benou
Posté le 09-03-2004 à 15:17:28  profilanswer
 

uriel a écrit :

je capte pas comment ce truc peut fonctionner :/


pkoi ca marcherait pas ?
 
Perso je trouve ca pareil que le paramétrage du proxy en variable système (ce qui est vraiment n'importe quoi, soit dit en passant)


---------------
ma vie, mon oeuvre - HomePlayer
n°668625
Taiche
(╯°□°)╯︵ ┻━┻
Posté le 09-03-2004 à 15:18:59  profilanswer
 

Ah ui, c'est vrai, l'Authenticator ! En plus, j'l'utilise dans mes classes de gestion HTTP et j'en avais parlé dans mon opic sur le HTTPS [:kiki]


---------------
Everyone thinks of changing the world, but no one thinks of changing himself  |  It is the peculiar quality of a fool to perceive the faults of others and to forget his own  |  Early clumsiness is not a verdict, it’s an essential ingredient.
n°668628
uriel
blood pt.2
Posté le 09-03-2004 à 15:19:38  profilanswer
 

non, ce que je veux dire, c'est que l'autentification exige que le mot de passe soit en Base64, ici je vois pas comment l'autentification peut fonctionner
 
edit: bon je vais lire la doc sur l'Authenticator [:neowen]


Message édité par uriel le 09-03-2004 à 15:20:39

---------------
IVG en france
n°668630
Taiche
(╯°□°)╯︵ ┻━┻
Posté le 09-03-2004 à 15:20:30  profilanswer
 

uriel a écrit :

non, ce que je veux dire, c'est que l'autentification exige que le mot de passe soit en Base64, ici je vois pas comment l'autentification peut fonctionner  


C'est PasswordAuthentication qui le fait pour toi.


---------------
Everyone thinks of changing the world, but no one thinks of changing himself  |  It is the peculiar quality of a fool to perceive the faults of others and to forget his own  |  Early clumsiness is not a verdict, it’s an essential ingredient.
mood
Publicité
Posté le   profilanswer
 

 Page :   1  2
Page Précédente

Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  Java

  comment passer un proxy en s'authentifiant ---> erreur 407

 

Sujets relatifs
Erreur de déclaration: Note& au lieu de Note*protection d'images par htaccess et proxy
[HTML] passer de dossier en dossier[ASP] Probleme avec les date , erreur avec le datatype de ma bd !
Que veut dire ce message d'erreur ?Handle sous-menu erreur
[C++ Erreur] ComCtrls.hpp(2638): E2015 Ambiguïté entre 'Windows' et...[vb]erreur method or data member not found[reglé]
Problème pour compiler (erreur)Passer en paramètre la clause WHERE en PL/SQL
Plus de sujets relatifs à : comment passer un proxy en s'authentifiant ---> erreur 407


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR