我已经构建了一个cordova应用程序,我需要在javascript(Ajax或不是Ajax)中调用soap webservice,但我一直得到:(内部服务器错误)
我的代码:
var soapMessage =
'<soap:Envelope xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">'+
'<soap:Body>'+
'<getList xmlns="http://tempuri.org/">'+
'<M><H><WS>FrameWorkService</WS><F>getList</F><K>KeyElencoSoggettiTemplateInd</K><DS>ElencoSoggettiTemplate</DS><TB>SoggettiTemplate</TB></H><B><P><p_lingua>IT</p_lingua><p_opeId>NETA</p_opeId><p_socId>283</p_socId><p_eseId>1248</p_eseId><p_SogTemId></p_SogTemId><p_SogTemCod></p_SogTemCod><p_SogTemDes>A</p_SogTemDes><p_tipRic>I</p_tipRic><p_CodFisc></p_CodFisc><p_PartIva></p_PartIva><p_IscrCamCom></p_IscrCamCom><p_LocalitaDes></p_LocalitaDes><p_TipoIndId>SL</p_TipoIndId><p_CategoriaId></p_CategoriaId><p_TemplateId>1</p_TemplateId><p_Professionista>N</p_Professionista><p_PersonaFisica>N</p_PersonaFisica><p_NazId></p_NazId><p_ordinamento></p_ordinamento></P><NP>1</NP><RP>14</RP><TP>auto</TP></B></M>'+
'</getList>'+
'</soap:Body>'+
'</soap:Envelope>';
$.ajax({
//web service pubblico di prova
url: ".../FrameWorkService.asmx",
type: 'POST',
dataType: "xml",
contentType: "text/xml; charset=\"utf-8\"",
headers: {
SOAPAction: ".../FrameWorkService.asmx?op=getList"
},
data: soapMessage,
success: function(soapResponse){
alert(soapResponse);
},
error: function (request, status, error) {
alert(request);
alert(status);
alert(error);
}
});
答案 0 :(得分:0)
在Cordova中,您的页面和JS将在本地加载到webview中,基本上作为file:// URL ...因此,您需要在$ .ajax调用中设置服务器的完整URL。网址设置。
如果您使用的是Cordova 5,并且此服务器不受SSL保护,您可能还需要在HTML中的元标记中配置Cordova的内容安全策略。
此外,如果您运行的是iOS 9,则可能还需要为服务器配置App Transport Security例外。这两个配置都在Stack Overflow上有详细记录。