Question

J'ai essayé l'exemple de http://www.helloandroid.com/tutorials/using-ksoap2-android-and-parsing-utput-data Pour obtenir la demande et la réponse d'un service WSDL. Cela fonctionne bien quand j'ai essayé dans un proxyless. Mais quand je travaille derrière le proxy, je reçois "L'opération a chronométré: le temps de demande a échoué: java.net.socketxception" Existe-t-il un moyen de définir le proxy sur SOAPObject ou SOAP Enveloppe?

Était-ce utile?

La solution

KSOAP ne fonctionne pas derrière un proxy. Inordre pour faire ce fonctionnement .. Téléchargez le httptransportse.java et ServiceConnectionse.java de Sourceforge.

Créez un package avec HttpTransportse et ServiceConnectionse.

Dans ServiceConnectionse Constructeur:

 String myProxy=android.net.Proxy.getDefaultHost() ;
            int myPort=android.net.Proxy.getDefaultPort();

            if(myProxy!=null){
                Proxy proxy = new Proxy(Proxy.Type.HTTP, new InetSocketAddress(myProxy, myPort));
                connection = (HttpURLConnection) new URL(url).openConnection(proxy);
            }
            else
            {
                connection = (HttpURLConnection) new URL(url).openConnection();
            }

Maintenant, partout où nous appelons la méthode httptransportse.call (), assurez-vous qu'il pointe vers votre propre package qui a ces deux fichiers.

Autres conseils

Salut tout le monde, la dernière version de KSOAP2.6.5 [l'a testée et l'a vérifiée] a correctement le problème d'authentification proxy. La HTTPTransportSE Le constructeur accepte maintenant java.net.Proxy Instance comme paramètre avec URL. La méthode sera comme
            HttpTransportSE httpTransport=new HttpTransportSE(proxy,URL);
Si votre proxy est configuré et s'il nécessite l'authentification, utilisezAuthenticator classe pour configurer vos informations d'identification de proxy et réussir. Hth, sinon écrivez-moi

Pour autant que je sache, vous devez configurer le proxy dans les paramètres du système d'exploitation Android eux-mêmes et cela fonctionnera bien.

Remplacer par ça.

//Timeout in milliseconds

int timeout=60000;
AndroidHttpTransport androidHttpTransport=new AndroidHttpTransport(url, timeout);
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top