如何通过jquery从Soap服务获取数据?

时间:2013-10-16 10:16:19

标签: c# javascript jquery soap cordova

我想从Webservice(Soap)获取数据,但它不成功。我在这里的服务http://icafe.ipos.vn/WSUitility/evsServiceUtility.svc?wsdl
我使用jquery请求服务,代码

    var soap = "<s:Envelope xmlns:s=\"http://schemas.xmlsoap.org/soap/envelope/\">" +
        "<soap:Body>" +
        "<Test xmlns=''>" +
        "</Test>" +
        "</soap:Body>" +
        "</soap:Envelope>";
    $.ajax({
        url: 'http://icafe.ipos.vn/WSUitility/evsServiceUtility.svc?wsdl',
        method: 'post',
        data: soap,
        contentType: "text/xml",
        dataType: "xml",
        beforeSend: function (xhr) {
            xhr.setRequestHeader("SOAPAction", "urn:evsServiceUtility/Test1");
        },
        crossDomain: true,
        success: function(SOAPResponse) {
            alert('ok');
        },
        error: function(SOAPResponse) {
            alert('no ok');
        }
    });

我的服务:

    public string Test()
    {
        try
        {
            return "Successfull!";
        }
        catch (Exception ex)
        {
            return ex.Message;
        }
    }

我花了很多次去搜索和尝试很多解决方案,但它没有用 任何人都可以帮助我吗?

2 个答案:

答案 0 :(得分:0)

我认为您的数据类型可以是XML,而不是问题。问题是,您如何编码data或参数?也许在浏览器的控制台中检查POST请求中的响应。

我在c#中选了一些东西来自动启用它,这里有很好的记录: http://encosia.com/3-mistakes-to-avoid-when-using-jquery-with-aspnet-ajax/

然后还有一件事要做JSON.stringify()数据。那么bhRequest是一个json对象吗?

...然后跨浏览器你必须实现json2.js: https://github.com/douglascrockford/JSON-js

答案 1 :(得分:0)

我没有看到你的var名为soap的用途。它看起来应该是发送到SOAP服务的“data:”,但是那里有一些叫做bhRequest的东西。

还要确保您允许使用

访问远程服务器的Phonegap
<access subdomains="true" origin="*" />
在config.xml中

。当您开始工作时,可以通过将其限制为icafe.ipos.vn域来限制它。