我想从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;
}
}我花了很多很多次来搜索和尝试许多解决方案,但都不起作用。
有谁可以帮我?
发布于 2013-10-16 18:32:31
我认为您的数据类型可以是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
发布于 2013-10-16 20:13:39
我不知道在哪里使用了名为soap的var。看起来应该是发送到SOAP服务的"data:“,但实际上是名为bhRequest的东西。
还要确保您允许Phonegap访问您的远程服务器
<access subdomains="true" origin="*" />在你的config.xml里。当你开始工作的时候,你可以通过把它限制在你的icafe.ipos.vn域中来使它变得更加严格。
https://stackoverflow.com/questions/19400769
复制相似问题