使用ajax

时间:2015-10-23 15:25:24

标签: ajax web-services cordova soap

我已经构建了一个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);
              }
          });

1 个答案:

答案 0 :(得分:0)

在Cordova中,您的页面和JS将在本地加载到webview中,基本上作为file:// URL ...因此,您需要在$ .ajax调用中设置服务器的完整URL。网址设置。

如果您使用的是Cordova 5,并且此服务器不受SSL保护,您可能还需要在HTML中的元标记中配置Cordova的内容安全策略。

此外,如果您运行的是iOS 9,则可能还需要为服务器配置App Transport Security例外。这两个配置都在Stack Overflow上有详细记录。