Я написал веб-службу ASMX, которая уже много лет работает в производственной среде. Сегодня клиенты Java неожиданно выдают ошибки при попытке разобрать ответ. Мы отследили это до BOM (Byte Order Mark), появившейся перед объявлением XML:
HTTP/1.1 200 OK
Cache-Control: no-cache
Pragma: no-cache
Content-Type: text/xml; charset=utf-8
Content-Encoding: gzip
Expires: -1
Vary: Accept-Encoding
Server: Microsoft-IIS/7.0
X-AspNet-Version: 2.0.50727
X-Powered-By: ASP.NET
MicrosoftSharePointTeamServices: 12.0.0.6300
Date: Wed, 22 Jun 2011 19:59:49 GMT
Content-Length: 3629

и файл .asmx.cs, который выглядит следующим образом:
public class MyService : System.Web.Services.WebService {
...
[WebMethod(CacheDuration = 30, Description = "This does something", MessageName = "GetMyStuff")]
public XmlDocument GetMyStuff(string param) {
return doGetStuff(param)
}
private XmlDocument doGetStuff(string param) {
...
}
}
Я видел несколько сообщений , в которых говорится о проблеме спецификации, но поскольку я просто возвращаю XML документ и фреймворк заботятся о потоковой передаче обратно клиенту, я не уверен, что смогу с этим что-нибудь сделать.
Обновление: Я обнаружил, что проблем со спецификацией НЕ существует на нашем сценическом сервере. Что может быть еще одной подсказкой; когда soapUI показывает необработанный ответ от prod, у него есть спецификация, а SOAP XML выглядит отформатированным (многострочным и с отступом). Когда я смотрю на сцену, там нет спецификации, и весь ответ находится в одной строке. Таким образом, в спецификацию также было добавлено другое.