diengkals Posté(e) 6 juin 2011 Share Posté(e) 6 juin 2011 bonjour , je doit me connecter a un server webphsere pour récupérer mes données pour cela je doit d abord m authenfier(j arrive a recuperer à partir d un web service les données accessible sans authentification mais mon problème se pose au niveau d authentification ) . j ai cherché quelque chose sur le net mais toujours sans succes . je vous met mon code voir si j ai pas fait des erreur de code . merci d avance public class Authentification extends Activity { /** Called when the activity is first created. */ String response; final String username = "19851985"; String result; final String password = "android85"; HttpResponse httpresponse; InputStream chaine; final String proxyHost = "localhost"; final int proxyPort = 80; String url = "http://10.0.2.2/webapp/wcs/stores/servlet/AddressBookForm?storeId=10101&catalogId=10101&langId=-2"; HttpEntity entity; @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); DefaultHttpClient client = new DefaultHttpClient(); AuthScope authScope = new AuthScope(null,-1, AuthScope.ANY_REALM); Credentials credential = new UsernamePasswordCredentials(username, password); client.getCredentialsProvider().setCredentials(authScope, credential); HttpGet httpGet = new HttpGet(url); httpGet.addHeader("User-Agent", "Android"); HttpConnectionParams.setConnectionTimeout(client.getParams(), 15000); httpresponse = client.execute(httpGet); entity = httpresponse.getEntity(); chaine = entity.getContent(); result = stream2String(chaine); JSONArray jsonOrdArray = new JSONArray(result);; for (int i = 0; i < jsonOrdArray.length(); i++) { Order order = new Order(); JSONObject commande = jsonOrdArray.getJSONObject(i);; order.reference = commande.getString("reference"); } } private String stream2String(InputStream stream) throws UnsupportedEncodingException { String charSet = "iso-8859-1"; InputStreamReader reader = new InputStreamReader(stream, charSet); BufferedReader buffer = new BufferedReader(reader); StringBuilder sb = new StringBuilder(); try { String cur; while ((cur = buffer.readLine()) != null) { sb.append(cur); } } catch (IOException e) { e.printStackTrace(); } try { stream.close(); } catch (IOException e) { e.printStackTrace(); } return sb.toString(); } } Citer Lien vers le commentaire Partager sur d’autres sites More sharing options...
diengkals Posté(e) 8 juin 2011 Auteur Share Posté(e) 8 juin 2011 svp quelqu un a une idée pour me debloquer merci Citer Lien vers le commentaire Partager sur d’autres sites More sharing options...
jokamax Posté(e) 10 juin 2011 Share Posté(e) 10 juin 2011 Bonjour, Plusieurs questions : - Quel est le mode d'authentification du serveur ? Basic/Digest ? - Quelles sont les erreurs que tu rencontres ? (rien ne vaut les traces des erreurs pour comprendre un problème) Merci, Jok Citer Lien vers le commentaire Partager sur d’autres sites More sharing options...
diengkals Posté(e) 14 juin 2011 Auteur Share Posté(e) 14 juin 2011 (modifié) merci pour votre reponse au fait j ai reverifier mon code et j ai trouvé que les erreurs venaient de la requete https . au fait je travaille sur un serveur qui utilise des requete https et le certificat fournit n est pas confiant je voulais savoir comment contouner la requete pour pouvoir ce connecter comme on le fait sur navigateur voici les erreur que ça me genere 06-14 17:09:19.977: WARN/PackageManager(69): Code path for pkg : com.connexion changing from /data/app/com.connexion-1.apk to /data/app/com.connexion-2.apk 06-14 17:09:19.977: WARN/PackageManager(69): Resource path for pkg : com.connexion changing from /data/app/com.connexion-1.apk to /data/app/com.connexion-2.apk 06-14 17:09:21.367: WARN/RecognitionManagerService(69): no available voice recognition services found 06-14 17:09:26.648: WARN/System.err(724): javax.net.ssl.SSLException: Not trusted server certificate 06-14 17:09:26.648: WARN/System.err(724): at org.apache.harmony.xnet.provider.jsse.OpenSSLSocketImpl.startHandshake(OpenSSLSocketImpl.java:371) 06-14 17:09:26.648: WARN/System.err(724): at org.apache.http.conn.ssl.AbstractVerifier.verify(AbstractVerifier.java:92) 06-14 17:09:26.659: WARN/System.err(724): at org.apache.http.conn.ssl.SSLSocketFactory.createSocket(SSLSocketFactory.java:381) 06-14 17:09:26.669: WARN/System.err(724): at org.apache.http.impl.conn.DefaultClientConnectionOperator.openConnection(DefaultClientConnectionOperator.java:164) 06-14 17:09:26.690: WARN/System.err(724): at org.apache.http.impl.conn.AbstractPoolEntry.open(AbstractPoolEntry.java:164) 06-14 17:09:26.690: WARN/System.err(724): at org.apache.http.impl.conn.AbstractPooledConnAdapter.open(AbstractPooledConnAdapter.java:119) 06-14 17:09:26.690: WARN/System.err(724): at org.apache.http.impl.client.DefaultRequestDirector.execute(DefaultRequestDirector.java:348) 06-14 17:09:26.708: WARN/System.err(724): at org.apache.http.impl.client.AbstractHttpClient.execute(AbstractHttpClient.java:555) 06-14 17:09:26.708: WARN/System.err(724): at org.apache.http.impl.client.AbstractHttpClient.execute(AbstractHttpClient.java:487) 06-14 17:09:26.708: WARN/System.err(724): at org.apache.http.impl.client.AbstractHttpClient.execute(AbstractHttpClient.java:465) 06-14 17:09:26.727: WARN/System.err(724): at com.connexion.Authentification$1.run(Authentification.java:86) 06-14 17:09:26.727: WARN/System.err(724): Caused by: java.security.cert.CertificateException: java.security.cert.CertPathValidatorException: TrustAnchor for CertPath not found. 06-14 17:09:26.758: WARN/System.err(724): at org.apache.harmony.xnet.provider.jsse.TrustManagerImpl.checkServerTrusted(TrustManagerImpl.java:168) 06-14 17:09:26.758: WARN/System.err(724): at org.apache.harmony.xnet.provider.jsse.OpenSSLSocketImpl.startHandshake(OpenSSLSocketImpl.java:366) 06-14 17:09:26.803: WARN/System.err(724): ... 10 more 06-14 17:09:26.813: WARN/System.err(724): Caused by: java.security.cert.CertPathValidatorException: TrustAnchor for CertPath not found. 06-14 17:09:26.820: WARN/System.err(724): at org.bouncycastle.jce.provider.PKIXCertPathValidatorSpi.engineValidate(PKIXCertPathValidatorSpi.java:149) 06-14 17:09:26.828: WARN/System.err(724): at java.security.cert.CertPathValidator.validate(CertPathValidator.java:202) 06-14 17:09:26.828: WARN/System.err(724): at org.apache.harmony.xnet.provider.jsse.TrustManagerImpl.checkServerTrusted(TrustManagerImpl.java:164) 06-14 17:09:26.839: WARN/System.err(724): ... 11 more Modifié 14 juin 2011 par AndroidRim Citer Lien vers le commentaire Partager sur d’autres sites More sharing options...
jokamax Posté(e) 15 juin 2011 Share Posté(e) 15 juin 2011 Etant en vacances jai pas acces a mes codes mais en gros sur internet mais en gros cherche un peu avec google. En gros la plus simple des solutions est decrire un connecteur (surcharge) qui check pas le certificat [color=red]qd[/color] tu es en hhtps. Javais trouver ca sur un blog. Si jamais tu trouves pas dici mon retour de conge jte copierai mon bout de code ici jok Message envoyé avec l'application Forum Frandroid Citer Lien vers le commentaire Partager sur d’autres sites More sharing options...
diengkals Posté(e) 15 juin 2011 Auteur Share Posté(e) 15 juin 2011 merci bien , j espère que vous n' allez pas trop durer car ça fait trois semaines que je suis bloqué sur cette partie et ça m empêche d'avancer et j ai vraiment beaucoup cherché sans succès . Citer Lien vers le commentaire Partager sur d’autres sites More sharing options...
jokamax Posté(e) 25 juin 2011 Share Posté(e) 25 juin 2011 Bonjour, Je viens de rentrer de congé ^^ Tu trouvera deux types de solution : 1 - Accepter tous les types de certificats http://stackoverflow.com/questions/995514/https-connection-android/1000205 http://stackoverflow.com/questions/2899079/custom-ssl-handling-stopped-working-on-android-2-2-froyo 2 - Accepter uniquement ton certificat autosigné http://blog.antoine.li/index.php/2010/10/android-trusting-ssl-certificates/ Voilà, Jok Citer Lien vers le commentaire Partager sur d’autres sites More sharing options...
diengkals Posté(e) 27 juin 2011 Auteur Share Posté(e) 27 juin 2011 (modifié) Bonjour, Je viens de rentrer de congé ^^ Tu trouvera deux types de solution : 1 - Accepter tous les types de certificats http://stackoverflow.com/questions/995514/https-connection-android/1000205 http://stackoverflow.com/questions/2899079/custom-ssl-handling-stopped-working-on-android-2-2-froyo 2 - Accepter uniquement ton certificat autosigné http://blog.antoine.li/index.php/2010/10/android-trusting-ssl-certificates/ Voilà, Jok merci bien Jok , maintenant j arrive a acceder au serveur via les requte https mais j ai un autre probleme qui est l authentification(login/password) . au fait j accède au ressources qui ne demande pas l'autorisation d’authentification(login/password) mais j arrive pas à accéder au ressources qui demande l'authentification(login/password ) et pourtant je pense avoir bien codé même le code de connexion me retourne 200 mais si je regarde au font qu'il ne récupère rien (il me retourne un tableau ) j ai testé avec mon navigateur web j ai trouvé si je m'authentifie les données sont retournées et si je m authentifie pas il me retourne un tableau null donc je conclu que l'authentification ne c est pas bien passé voici comment je l ai codé SchemeRegistry registre= new SchemeRegistry(); registre.register(new Scheme("http", PlainSocketFactory.getSocketFactory(), 8002)); registre.register(new Scheme("https", new EasySSLSocketFactory(), 443)); params = new BasicHttpParams(); params.setParameter(ConnManagerPNames.MAX_TOTAL_CONNECTIONS,1); params.setParameter(ConnManagerPNames.MAX_CONNECTIONS_PER_ROUTE, new ConnPerRouteBean(1)); params.setParameter(HttpProtocolParams.USE_EXPECT_CONTINUE, false); HttpProtocolParams.setVersion(params,HttpVersion.HTTP_1_1 ); HttpProtocolParams.setContentCharset(params,"utf8"); [b] CredentialsProvider credentialsProvider = new BasicCredentialsProvider(); credentialsProvider.setCredentials( new AuthScope ("urlslogin",443), new UsernamePasswordCredentials(username, password)); [/b] context = new BasicHttpContext(); context.setAttribute("http.auth.credentials-provider",credentialsProvider ); clienConnectionManager = new ThreadSafeClientConnManager(params,registre); client = new DefaultHttpClient(clienConnectionManager, params); client.getCredentialsProvider(); j ai mis en gras la partie qui concerne l authentification merci de votre aide Modifié 27 juin 2011 par AndroidRim Citer Lien vers le commentaire Partager sur d’autres sites More sharing options...
jokamax Posté(e) 27 juin 2011 Share Posté(e) 27 juin 2011 Hello, Je ne vois pas ou tu utilise ton context dans le code ^^ Je ne te vois pas non plus setter ton provider ^^ Jète un oeil sur google (stackOverFlow) il y a pas mal d'exemple. Faut également voir coté serveur ? c'est bien du basic du digest ? Bon courage Jok Citer Lien vers le commentaire Partager sur d’autres sites More sharing options...
diengkals Posté(e) 27 juin 2011 Auteur Share Posté(e) 27 juin 2011 (modifié) Hello, Je ne vois pas ou tu utilise ton context dans le code ^^ Je ne te vois pas non plus setter ton provider ^^ Jète un oeil sur google (stackOverFlow) il y a pas mal d'exemple. Faut également voir coté serveur ? c'est bien du basic du digest ? Bon courage Jok merci bien c vrai j ai pas mis tout le code ce qui du serveur j ai pas vrai accès ce qui fatigue c est serveur wcs(WebSphere Commerce Server ) . pouvez vous me donner plus d explication de l'utilisation de CredentialsProvider et basic du digest je comrpend pas bien CredentialsProvider credentialsProvider = new BasicCredentialsProvider(); credentialsProvider.setCredentials( new AuthScope ("urlslogin",443), new UsernamePasswordCredentials(username, password)); voici comment j utilise le context et provider SchemeRegistry registre= new SchemeRegistry(); registre.register(new Scheme("http", PlainSocketFactory.getSocketFactory(), 80)); registre.register(new Scheme("https", new EasySSLSocketFactory(), 443)); params = new BasicHttpParams(); params.setParameter(ConnManagerPNames.MAX_TOTAL_CONNECTIONS,1); params.setParameter(ConnManagerPNames.MAX_CONNECTIONS_PER_ROUTE, new ConnPerRouteBean(1)); params.setParameter(HttpProtocolParams.USE_EXPECT_CONTINUE, false); HttpProtocolParams.setVersion(params,HttpVersion.HTTP_1_1 ); HttpProtocolParams.setContentCharset(params,"utf8"); CredentialsProvider credentialsProvider = new BasicCredentialsProvider(); credentialsProvider.setCredentials( new AuthScope ("urlslogin",443), new UsernamePasswordCredentials(username, password)); context = new BasicHttpContext(); [b] context.setAttribute("http.auth.credentials-provider",credentialsProvider );[/b] [b] httpResponse = client.execute(get,context);[/b] le provider je le met dans le context et merci de votre aide Modifié 27 juin 2011 par AndroidRim Citer Lien vers le commentaire Partager sur d’autres sites More sharing options...
jokamax Posté(e) 28 juin 2011 Share Posté(e) 28 juin 2011 Je ne vais pas énormément pouvoir t'aider davantage, je suis désolé. Essais de jeter un oeil : ici et ici et enfin : là En espérant que ca t'aide Citer Lien vers le commentaire Partager sur d’autres sites More sharing options...
Recommended Posts
Rejoignez la conversation
Vous pouvez poster maintenant et vous enregistrez plus tard. Si vous avez un compte, connectez-vous maintenant pour poster.