Timeout KSOAP derrière Proxy dans Android
-
28-10-2019 - |
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?
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);