Я создал простой сервис wcf, который предоставляет метод GetData. На самом деле это шаблон, созданный при создании нового проекта wcf.
Я добавил приложение на сервер iis, чтобы к нему можно было получить доступ извне, например: http://192.168.0.100/TFSWrapper/Service1.svc
Я использовал универсальный мыльный клиент для отправки запроса в метод GetData. Это сгенерированный запрос мыла:
<?xml version="1.0" encoding="utf-16"?>
<soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
<soap:Body>
<GetData xmlns="http://tempuri.org/" />
</soap:Body>
</soap:Envelope>
Вот мыльный ответ:
<?xml version="1.0" encoding="utf-16"?>
<s:Envelope xmlns:s="http://schemas.xmlsoap.org/soap/envelope/">
<s:Body>
<GetDataResponse xmlns="http://tempuri.org/">
<GetDataResult>You entered: 87</GetDataResult>
</GetDataResponse>
</s:Body>
</s:Envelope>
Кстати, я удалил параметр из метода и жестко закодировал возвращаемое значение.
Как видите, все работает как надо.
Затем я создал клиент Titanium, который вызывает ту же службу. Я использовал точный запрос на мыло, как указано выше, просто чтобы убедиться.
В основном я сделал это:
var s='<soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema"><soap:Body><GetData xmlns="http://tempuri.org/" /></soap:Body></soap:Envelope>';
//xhr.send(config.envelopeBegin+body+config.envelopeEnd);
xhr.send(s);
Когда это отправлено, сервер возвращает ответ «500 внутренняя ошибка сервера» вместе со следующей строкой ошибки:
Сообщение с действием 'http://tempuri.org/GetData' не может быть
обработано в получателе, из-за несоответствия ContractFilter в
EndpointDispatcher. Это может быть из-за несоответствия контракта
(несоответствующие действия между отправителем и получателем) или привязка / безопасность
несоответствие между отправителем и получателем. Проверьте отправителя и
получатель имеют одинаковый договор и одинаковую привязку
требования безопасности, например Сообщение, Транспорт, Нет).
Сначала я использовал API титанового мыла для создания XML-запроса, но я получал ту же ошибку. Я думал, что это проблема с тем, как это создается, поэтому я жестко запрограммировал запрос (это работает), но все равно не повезло.