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