http://www.helloandroid.com/tutorials/using-ksoap2-android-and-parsing-output-dataの例を試して、wsdl サービスから要求と応答を取得しました。プロキシレスで試したところ、うまくいきました。しかし、プロキシの背後で作業すると、「操作がタイムアウトしました:要求時間に失敗しました:java.net.SocketException」が表示されますプロキシをSoapObjectまたはSoap Envelopに設定する方法はありますか?
4 に答える
Ksoap はプロキシの背後では機能しません。それを機能させるには、sourceforge から HttpTransportSE.java と ServiceConnectionSE.java をダウンロードします。
HttpTransportSE と ServiceConnectionSE でパッケージを作成します。
ServiceConnectionSE コンストラクター:
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();
}
ここで、HttpTransportSE.call() メソッドを呼び出す場所はどこでも、この 2 つのファイルを含む独自のパッケージを指していることを確認してください。
みなさん、こんにちは。最新バージョンのKSOAP2.6.5 [テストおよび検証済み]では、プロキシ認証の問題が修正されています。コンストラクターは、URLとともにインスタンスをパラメーターとしてHTTPTransportSE
受け入れるようになりました。java.net.Proxy
メソッドは次のようになり
HttpTransportSE httpTransport=new HttpTransportSE(proxy,URL);
ます。プロキシが構成されていて、認証が必要な場合は、
Authenticator
クラスを使用してプロキシクレデンシャルを設定し、成功します。HTH、そうでない場合は私に返信してください
これに交換して..
//Timeout in milliseconds
int timeout=60000;
AndroidHttpTransport androidHttpTransport=new AndroidHttpTransport(url, timeout);
私の知る限り、Android オペレーティング システムの設定自体でプロキシを設定する必要があり、正常に動作します。