Я пытаюсь отправить SOAP-запрос через вызов JS на простой странице.При отправке, если я отлаживаю через браузер, я получаю:
POST http://localhost:63748/DistGamingWebService.svc 400 (неверный запрос)
У меня есть веб-сервис (как указано выше), который подключается к основному серверу типа «база данных», работающему локально.Соединения между ними работают нормально - когда я запускаю тестовый клиент WCF, я могу вызывать методы и получать возвращаемые значения, как и ожидалось.
Я настроил сообщение SOAP на основе XML-запроса тестового клиента WCF, ноЯ все еще получаю 400 плохих запросов.Значение req.status всегда равно 1.
Я включил ниже мой вызов JS и формат сообщения POST.
function GetNumBossesTest() {
req = null;
if (window.XMLHttpRequest != undefined)
req = new XMLHttpRequest();
else {
req = new ActiveXObject("Micosoft.XMLHTTP");
}
req.open("POST", "http://localhost:63748/DistGamingWebService.svc", true);
req.setRequestHeader("Content-Type", "text/xml");
req.setRequestHeader("SOAPAction", "http://tempuri.org/IDistGamingWebService/GetNumBosses");
var sMsg = '<?xml version="1.0" encoding="utf-8"?><soap:Envelope xmlns:s="http://schemas.xmlsoap.org/soap/envelope/"><soap:Header><Action soap:>http://tempuri.org/IDistGamingWebService/GetNumBosses</Action></soap:Header><soap:Body><GetNumBosses xmlns="http://tempuri.org/" /></soap:Body></s:Envelope>';
req.send(sMsg);
if (req.status == 200)
alert(req.responseText);
}
В приведенном выше примере я упростилсообщение, сделав его полностью в одну строку.Когда я проверяю запрос с помощью отладки Fiddler и Chrome, сообщение форматируется точно так, как его вставляет JS.
С точки зрения интерфейса на моем веб-svc у меня есть следующее:
[ServiceContract]
public interface IDistGamingWebService
{
[OperationContract]
int GetNumBosses();
}
Реализация этого интерфейса - это просто удаленные вызовы на другом похожем на базу сервере.
Заранее спасибо.