在android中代理后面的ksoap超时

时间:2011-02-03 08:38:01

标签: android proxy socketexception ksoap envelope

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

4 个答案:

答案 0 :(得分: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()方法,都要确保它指向你自己的包含这两个文件的包。

答案 1 :(得分:1)

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

答案 2 :(得分:0)

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

答案 3 :(得分:0)

替换为此..

//Timeout in milliseconds

int timeout=60000;
AndroidHttpTransport androidHttpTransport=new AndroidHttpTransport(url, timeout);