Я использую сгенерированный JAX-WS клиент (использующий wsimport, входящий в комплект Glassfish 2.1.1) для подключения к сгенерированному ASP.NET WebService, работающему в IIS 6.
Когда я запрашиваю сжатие вответ (включая HTTP-заголовок Accept-Encoding: gzip через обработчики SOAP JAX-WS ) IIS 6 отвечает сжатым ответом, но не включает Content-Кодировка: gzip HTTP-заголовок ответа, поэтому я получаю следующее исключение:
com.sun.xml.ws.protocol.soap.MessageCreationException: Couldn't create SOAP message due to exception: XML reader error: com.sun.xml.stream.XMLStreamException2: ParseError at [row,col]:[1,1]
Message: Content is not allowed in prolog.
at com.sun.xml.ws.encoding.SOAPBindingCodec.decode(SOAPBindingCodec.java:361) at com.sun.xml.ws.transport.http.client.HttpTransportPipe.process(HttpTransportPipe.java:173)
at com.sun.xml.xwss.XWSSClientPipe.process(XWSSClientPipe.java:160)
at com.sun.xml.ws.api.pipe.helper.PipeAdapter.processRequest(PipeAdapter.java:115)
at com.sun.xml.ws.api.pipe.Fiber.__doRun(Fiber.java:595)
at com.sun.xml.ws.api.pipe.Fiber._doRun(Fiber.java:554)
at com.sun.xml.ws.api.pipe.Fiber.doRun(Fiber.java:539)
at com.sun.xml.ws.api.pipe.Fiber.runSync(Fiber.java:436)
at com.sun.xml.ws.client.Stub.process(Stub.java:248)
at com.sun.xml.ws.client.sei.SEIStub.doProcess(SEIStub.java:135)
at com.sun.xml.ws.client.sei.SyncMethodHandler.invoke(SyncMethodHandler.java:109)
at com.sun.xml.ws.client.sei.SyncMethodHandler.invoke(SyncMethodHandler.java:89)
at com.sun.xml.ws.client.sei.SEIStub.invoke(SEIStub.java:118)
Отредактировано 17 апреля 2011
Я такжепопытался, используя тот же SOAPHandler, который я использую для запроса сжатого ответа, изменить заголовки ответа, но перед вызовом обработчика возникает исключение.
Окончание редактирования 17 апреля 2011 г.
Кроме того, когда я делаю тот же запрос к WebService через soapUI 3.6.1 с предпочтением «Принимать сжатые ответы от хостов», я вижу то, что я сказал: сервер IIS 6 не включаетHTTP-ответ Header для сжатия, и soapUI показывает ответ в виде «двоичных данных» и показывает следующие заголовки ответа:
HTTP/1.1 200 OK
Date: Wed, 13 Apr 2011 08:50:55 GMT
Server: Microsoft-IIS/6.0
X-Powered-By: ASP.NET
X-AspNet-Version: 2.0.50727
Cache-Control: private, max-age=0
Content-Type: text/xml; charset=utf-8
Content-Length: 1104
Если -with soapUI- я не запрашиваю сжатый ответ, я получаю следующий размер ответа:
Content-Length: 2665
Итак, вопрос, как я уже сказал, заключается в том, что IIS6 не добавляет заголовок Contend-Encoding в ответе.Мой вопрос: возможно ли программно добавить заголовок Content-Encoding?Или это также может быть: Можно ли попросить IIS6 включить заголовок Content-Encoding?
UPDATE
Использование Charles Web Debugging Proxy 3.5.2 Я подтвердилОтвет от IIS6 не включает заголовок Content-Encoding :
HTTP/1.1 200 OK
Date Wed, 13 Apr 2011 10:51:53 GMT
Server Microsoft-IIS/6.0
X-Powered-By ASP.NET
X-AspNet-Version 2.0.50727
Cache-Control private, max-age=0
Content-Type text/xml; charset=utf-8
Content-Length 1110
Я предполагаю, что это может быть связано с WebService больше, чем с IIS 6