У меня есть простой веб-сервис WCF, который я пытался подключить с помощью jquery и SOAP-XML (dataType: "xml"). Но когда я отправляю свой запрос, я получаю сообщение "BAD REQUEST Error 400" с моего сервера.вот мой SOAP-XML:
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/wsdl/soap/"> \
<soap:Header> \
<Action soap:mustUnderstand=\"1\" xmlns=\"http://schemas.microsoft.com/ws/2005/05/addressing/none\">http://tempuri.org/IService/HelloWorld</Action> \
</soap:Header> \
<soap:Body> \
<HelloWorld xmlns="http://tempuri.org/"> \
</HelloWorld> \
</soap:Body> \
</soap:Envelope>';
, а это мой $ .Ajax:
var productServiceUrl = 'http://localhost:3523/Service.svc/HelloWorld';
$.ajax({
url: productServiceUrl,
type: "POST",
dataType: "xml",
data: soapMessage,
complete: endSaveProduct,
contentType: "text/xml; charset=\"utf-8\"",
async: true,
error: function (xhr, textStatus, errorThrown) {
alert(errorThrown);
}
});
, а вот деталь запроса и ответа (я прослеживаю это в Google Chrome):
Запрос Hedear
POST /Service.svc/HelloWorld HTTP/1.1
Host: localhost:3523
Connection: keep-alive
Content-Length: 550
Origin: http://localhost:3523
X-Requested-With: XMLHttpRequest
User-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/535.2 (KHTML, like Gecko) Chrome/15.0.874.15 Safari/535.2
Content-Type: text/xml; charset="UTF-8"
Accept: application/xml, text/xml, */*; q=0.01
Referer: http://localhost:3523/WcfService.htm
Accept-Encoding: gzip,deflate,sdch
Accept-Language: en-US,en;q=0.8
Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.3
и мой заголовок ответа
HTTP/1.1 400 Bad Request
Server: ASP.NET Development Server/10.0.0.0
Date: Wed, 04 Jan 2012 14:56:06 GMT
X-AspNet-Version: 4.0.30319
Cache-Control: private
Content-Length: 0
Connection: Close
Запрос полезной нагрузки:
<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/wsdl/soap/"> <soap:Header><Action soap:mustUnderstand="1" xmlns="http://schemas.microsoft.com/ws/2005/05/addressing/none">http://tempuri.org/IService/HelloWorld</Action> </soap:Header><soap:Body><HelloWorld xmlns="http://tempuri.org/"></HelloWorld></soap:Body> </soap:Envelope>
и этоесли мой веб-сервис WCF:
[OperationContract]
[WebInvoke(Method = "POST",
BodyStyle = WebMessageBodyStyle.Wrapped,
ResponseFormat = WebMessageFormat.Xml,
RequestFormat = WebMessageFormat.Xml)]
String HelloWorld();