0

我尝试了http://www.helloandroid.com/tutorials/using-ksoap2-android-and-parsing-output-data中的示例来获取来自 wsdl 服务的请求和响应。当我尝试无代理时,它工作正常。但是当我在代理后面工作时,我得到“操作超时:请求时间失败:java.net.SocketException”有没有办法将代理设置为 SoapObject 或 Soap Envelop?

4

4 回答 4

2

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() 方法,请确保它指向您自己的包含这两个文件的包。

于 2011-02-14T11:40:27.063 回答
1

  大家好, KSOAP2.6.5 的最新版本 [已测试并验证] 已修复代理身份验证问题。构造HTTPTransportSE函数现在接受java.net.Proxy实例作为参数以及 URL。该方法类似于
            HttpTransportSE httpTransport=new HttpTransportSE(proxy,URL);
  如果您的代理已配置并且需要身份验证,则使用 Authenticator类来设置您的代理凭据并成功。HTH,如果不给我回信

于 2012-06-29T21:16:16.233 回答
0

据我所知,您必须自己在 android 操作系统设置中设置代理,它才能正常工作。

于 2011-02-03T18:10:45.573 回答
0

换成这个..

//Timeout in milliseconds

int timeout=60000;
AndroidHttpTransport androidHttpTransport=new AndroidHttpTransport(url, timeout);
于 2012-03-07T11:48:52.060 回答