У меня есть следующий метод в моей службе WCF:
[OperationContract]
[WebInvoke(Method = "POST", BodyStyle = WebMessageBodyStyle.Bare, ResponseFormat = WebMessageFormat.Xml, RequestFormat = WebMessageFormat.Xml)]
public int GetOne(string param1, string param2)
{
return 1;
}
Я отправляю xml из приложения Flex, и он принимает объект, который выглядит следующим образом:{ param1: "test", param2: "test2" }
и превращает его в следующий запрос:
POST http://localhost:8012/MyService.svc/GetOne HTTP/1.1
Accept: application/xml
Accept-Language: en-US
x-flash-version: 10,1,53,64
Content-Type: application/xml
Content-Length: 52
Accept-Encoding: gzip, deflate
User-Agent: Mozilla/5.0 (compatible; MSIE 9.0; Windows NT 6.1; WOW64; Trident/5.0)
Host: localhost:8012
Connection: Keep-Alive
Pragma: no-cache
Cookie: ASP.NET_SessionId=drsynacw0ignepk4ya4pou23
<param1>something</param1><param2>something</param2>
Я получаю сообщение об ошибке The incoming message has an unexpected message format 'Raw'. The expected message formats for the operation are 'Xml', 'Json'.
. Все, что я прочитал, указывает на то, что мне просто нужно, чтобы тип содержимого -был application/xml
, но по какой-то причине он все еще думает, что это Raw. Учитывая сигнатуру моего метода, я не понимаю, чего он ожидает и как мне нужно сформировать запрос, чтобы он принял его как XML.
Я пропустил что-то очевидное здесь? Почему он думает, что это RAW, когда указывает XML и предоставляет XML?
Изменить-Вот сторона Flex на случай, если я что-то упустил.
var getOneService:HttpService = new HttpService("myURL");
getOneService.method = "POST";
getOneService.resultFormat = "e4x";
getOneService.contentType = HTTPService.CONTENT_TYPE_XML;
getOneService.headers = { Accept: "application/xml" };
getOneService.send({ param1: "test", param2: "test2" });