当我试图调用.NET web服务方法时,我得到了一个Java异常"Operation timed out“。为了让我的安卓系统调用.net web服务,我在网上学习了很多例子。
我在调试模式下使用VS2010运行web服务。我调用的web方法是非常简单的字符串“-> GetVersion()”
我读过一些帖子,说eclipse需要通过从窗口菜单项修改代理首选项"Preferences -> General -> Network Connections“来配置访问internet。如果这是问题所在,我还不能确定我需要在代理中配置什么才能让事情正常工作。
我也尝试过从我的安卓系统访问.net网络服务根页面(service.asmx),但没有成功。我可以在本地机器上使用IE毫无问题地访问asmx页面。我关闭了防火墙,但这也解决不了任何问题。这是我第一次尝试从远程计算机访问正在调试模式下使用VS2010运行的web服务。
我不知道我是在eclipse方面还是在VS2010方面遇到了配置问题。
我也在运行Windows7家庭高级版。
有什么想法吗?
private static final String SOAP_ACTION = "http://192.168.1.151/MyWebService/GetVersion";
private static final String METHOD_NAME = "GetVersion";
private static final String NAMESPACE = "http://192.168.1.151/MyWebService";
private static final String URL = "http://192.168.1.151/MyService.asmx";
private void Connect()
{
SoapObject request = new SoapObject(NAMESPACE, METHOD_NAME);
SoapSerializationEnvelope envelope = new SoapSerializationEnvelope(SoapEnvelope.VER11);
envelope.dotNet=true;
envelope.setOutputSoapObject(request);
HttpTransportSE androidHttpTransport = new HttpTransportSE(URL);
System.out.println("DEBUG >> HttpTransport.call()");
try
{
androidHttpTransport.call(SOAP_ACTION, envelope);
}
catch(IOException iexc)
{
System.out.println("EXCEPTION >> " + iexc.toString());
}
catch(XmlPullParserException xexc)
{
System.out.println("EXCEPTION >> " + xexc.toString());
}
try
{
Object result = (Object)envelope.getResponse();
tv.setText(result.toString());
}
catch (SoapFault sp)
{
System.out.println("EXCEPTION >> " + sp.toString());
}
}发布于 2010-09-05 03:27:54
如果你在.Net的调试模式下运行VS2010Web服务,那么你很可能正在运行一个名为Cassini的web服务器。不幸的是,无法远程访问Cassini托管的站点:
当然,您可以执行一些port forwarding来绕过此限制。
发布于 2010-09-05 15:22:01
尝试将服务部署到IIS。
发布于 2010-09-29 10:28:24
从here获取"ksoap2-android“jar文件。
将其作为"Add External JAR“添加到Eclipse项目中。
然后使用AndroidHttpTransport对象,如下面的代码片段所示:
try
{
SoapObject request = new SoapObject(NAMESPACE, METHOD_NAME);
request.addProperty("a", "15");
request.addProperty("b", "20");
SoapSerializationEnvelope envelope = new SoapSerializationEnvelope(SoapEnvelope.VER11);
envelope.dotNet=true;
envelope.setOutputSoapObject(request);
AndroidHttpTransport androidHttpTransport = new AndroidHttpTransport(URL);
androidHttpTransport.call(SOAP_ACTION, envelope);
SoapPrimitive result = (SoapPrimitive)envelope.getResponse();
returnMessage = result.toString();
}
catch (SoapFault sf){
returnMessage = "FAULT:\n";
String faultString = "Code: " + sf.faultcode + "\nString: " +
sf.faultstring;
Log.d(TAG , "fault : " + faultString);
returnMessage += faultString;
}
catch( Exception e )
{
Log.d(TAG , "exception e = "+ e.getMessage());
returnMessage = "Call Exception:" + e.toString();
}
return returnMessage;希望这能有所帮助。
https://stackoverflow.com/questions/3642482
复制相似问题