We had a similar problem writing a .Net client to a 3rd party Java webservice, .Net included the Byte order mark and the Java service would throw an exception.
The 3rd party SOAP method took a single string as an argument, and that string was an XML document (I love people who don't really understand what problem SOAP is trying to solve!) By default .net added the UTF-8 byte order mark to the "payload" xml document, which is strictly correct, but in practice causes problems.
In our case we found two possible solutions from the client (.net) end. I'm not sure how easy this will be to do from SQL Reporting services though.
String.Trim() - The xml had to get put into a string before passing into the soap method, calling .Trim() removed the byte order mark. Easy.
The second method was to set the UTF encoding settings on the XmlWriterSettings slightly differently, something like the following:
XmlWriter xmlWriter = null;
XmlWriterSettings settings = new XmlWriterSettings();
settings.Indent = true;
settings.Encoding = new UTF8Encoding(false);
xmlWriter = XmlWriter.Create(xmlSteam, settings);
The important bit is the "new UTF8Encoding(false);", that argument is "encoderShouldEmitUTF8Identifier" and pretty much solves the problem.
Following options enable logging of all communication to the console (technically, you only need one of these, but that depends on the libraries you use, so setting all four is safer option). You can set it in the code like in example, or as command line parameter using -D or as environment variable as Upendra wrote.
System.setProperty("com.sun.xml.ws.transport.http.client.HttpTransportPipe.dump", "true");
System.setProperty("com.sun.xml.internal.ws.transport.http.client.HttpTransportPipe.dump", "true");
System.setProperty("com.sun.xml.ws.transport.http.HttpAdapter.dump", "true");
System.setProperty("com.sun.xml.internal.ws.transport.http.HttpAdapter.dump", "true");
System.setProperty("com.sun.xml.internal.ws.transport.http.HttpAdapter.dumpTreshold", "999999");
See question Tracing XML request/responses with JAX-WS when error occurs for details.
Best Answer
Use
com.sun.xml.internal.ws.transport.http.client.HttpTransportPipe.dump=true
and
com.sun.xml.internal.ws.transport.http.HttpAdapter.dump=true
instead (note the "internal" in the package name), this did the trick for me.
Cheers, Torsten