ajax调用webservice注意事项

本文详细介绍了Webservice客户端配置解决跨域问题的方法,并通过一个具体的Ajax请求示例展示了如何使用SOAP1.2标准与Webservice进行交互。此外,还对比了SOAP1.1与SOAP1.2的不同之处。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1.weservice客户端需要注意(跨域请求)

<system.webServer>
    <validation validateIntegratedModeConfiguration="false"/>
    <httpProtocol>
      <customHeaders>
        <add name="Access-Control-Allow-Methods" value="OPTIONS,POST,GET"/>
        <add name="Access-Control-Allow-Headers" value="x-requested-with,content-type"/>
        <add name="Access-Control-Allow-Origin" value="*"/>
      </customHeaders>
    </httpProtocol>

  </system.webServer>

2.ajax请求

var soapdata='{"subject":"测试电话李明远","cicc_contactid": null,"cicc_direction":"10","ownerid":"A6B254F4-6A49-E611-80BE-005056BD7FD2","cicc_contacts_text":"白展堂","cicc_if_im": null,"scheduleend":"2017-10-10 09:00:00","schedulestart":"2017-10-10 08:00:00","cicc_requestdepartment": null,"cicc_talktime": null,"description": null,"cicc_phonenumber": null,"cicc_company": null,"cicc_source": null}';
var soap='<?xml version="1.0" encoding="utf-8"?><soap12:Envelope xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:soap12="http://www.w3.org/2003/05/soap-envelope"><soap12:Body> <InsertPhonecall xmlns="http://tempuri.org/"><obj>'+soapdata+'</obj></InsertPhonecall></soap12:Body></soap12:Envelope>';
 $.ajax({
                type: "POST",
                url: "http://loacalhost/PortalService/PortalService.asmx?InsertPhonecall ",
                data:soap,
                contentType: "application/soap+xml",
                charset:"utf-8",
                cache: false,
                dataType:"xml",
                async: false,
                success: function (data) { debugger; alert(data.firstChild.textContent); },
                error: function (data) { console.log(data);}
            });

分析一波soap格式,注意在soap1.2版本中<soap12:Body><方法名 xmlns="http://tempuri.org/"><参数名>参数</参数名></方法名></soap12:Body>

另外可以参考网页中涉及的传输方法

SOAP 1.1

以下是 SOAP 1.2 请求和响应示例。所显示的占位符需替换为实际值。

POST /PortalService.asmx HTTP/1.1
Host: localhost
Content-Type: text/xml; charset=utf-8
Content-Length: length
SOAPAction: "http://tempuri.org/Hi"

<?xml version="1.0" encoding="utf-8"?>
<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>
    <Hi xmlns="http://tempuri.org/">
      <hi>string</hi>
    </Hi>
  </soap:Body>
</soap:Envelope>
HTTP/1.1 200 OK
Content-Type: text/xml; charset=utf-8
Content-Length: length

<?xml version="1.0" encoding="utf-8"?>
<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>
    <HiResponse xmlns="http://tempuri.org/">
      <HiResult>string</HiResult>
    </HiResponse>
  </soap:Body>
</soap:Envelope>

SOAP 1.2

以下是 SOAP 1.2 请求和响应示例。所显示的占位符需替换为实际值。

POST /PortalService.asmx HTTP/1.1
Host: localhost
Content-Type: application/soap+xml; charset=utf-8
Content-Length: length

<?xml version="1.0" encoding="utf-8"?>
<soap12:Envelope xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:soap12="http://www.w3.org/2003/05/soap-envelope">
  <soap12:Body>
    <Hi xmlns="http://tempuri.org/">
      <hi>string</hi>
    </Hi>
  </soap12:Body>
</soap12:Envelope>
HTTP/1.1 200 OK
Content-Type: application/soap+xml; charset=utf-8
Content-Length: length

<?xml version="1.0" encoding="utf-8"?>
<soap12:Envelope xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:soap12="http://www.w3.org/2003/05/soap-envelope">
  <soap12:Body>
    <HiResponse xmlns="http://tempuri.org/">
      <HiResult>string</HiResult>
    </HiResponse>
  </soap12:Body>
</soap12:Envelope>

HTTP POST

以下是 HTTP POST 请求和响应示例。所显示的占位符需替换为实际值。

POST /PortalService.asmx/Hi HTTP/1.1
Host: localhost
Content-Type: application/x-www-form-urlencoded
Content-Length: length

hi=string
HTTP/1.1 200 OK
Content-Type: text/xml; charset=utf-8
Content-Length: length

<?xml version="1.0" encoding="utf-8"?>
<string xmlns="http://tempuri.org/">string</string>


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值