首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >对.NET web服务的调用超时(使用KSOAP2的Android开发)

对.NET web服务的调用超时(使用KSOAP2的Android开发)
EN

Stack Overflow用户
提问于 2010-09-04 21:30:29
回答 4查看 2.2K关注 0票数 1

当我试图调用.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家庭高级版。

有什么想法吗?

代码语言:javascript
复制
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());
    }
}
EN

回答 4

Stack Overflow用户

发布于 2010-09-05 03:27:54

如果你在.Net的调试模式下运行VS2010Web服务,那么你很可能正在运行一个名为Cassini的web服务器。不幸的是,无法远程访问Cassini托管的站点:

当然,您可以执行一些port forwarding来绕过此限制。

票数 0
EN

Stack Overflow用户

发布于 2010-09-05 15:22:01

尝试将服务部署到IIS。

票数 0
EN

Stack Overflow用户

发布于 2010-09-29 10:28:24

here获取"ksoap2-android“jar文件。

将其作为"Add External JAR“添加到Eclipse项目中。

然后使用AndroidHttpTransport对象,如下面的代码片段所示:

代码语言:javascript
复制
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;

希望这能有所帮助。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/3642482

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档