私は、デスクトップの.netアプリケーションでWebサービスのメソッドを実行しようとしていますが、XML結果の表現に問題があります。私が上記のメソッドコンパイラを実行すると、このエラーがスローされます:
ネットワークから受信したXMLに問題があります。
詳細については内部例外を参照してください。
WebサービスはApacheサーバー上でホストされ、PHPで書かれています。
そのメソッドを正常に実行できるクライアント・サンプルがあります。結果XMLは次のようになります。
<?xml version="1.0" encoding="UTF-8" ?>
11838-78
test
ここでは内部例外の詳細の一部です: "ルートレベルのデータが無効です"
Message=The data at the root level is invalid. Line 1, position 1.
Source=System.Runtime.Serialization
LineNumber=0
LinePosition=0
StackTrace:
at System.Xml.XmlExceptionHelper.ThrowXmlException(XmlDictionaryReader reader, String res, String arg1, String arg2, String arg3)
at System.Xml.XmlUTF8TextReader.Read()
at System.Xml.XmlBaseReader.IsStartElement()
at System.Xml.XmlBaseReader.IsStartElement(XmlDictionaryString localName, XmlDictionaryString namespaceUri)
at System.ServiceModel.Channels.ReceivedMessage.ReadStartEnvelope(XmlDictionaryReader reader)
at System.ServiceModel.Channels.BufferedMessage..ctor(IBufferedMessageData messageData, RecycledMessageState recycledMessageState, Boolean[] understoodHeaders, Boolean understoodHeadersModified)
at System.ServiceModel.Channels.TextMessageEncoderFactory.TextMessageEncoder.ReadMessage(ArraySegment`1 buffer, BufferManager bufferManager, String contentType)
at System.ServiceModel.Channels.MessageEncoder.ReadMessage(Stream stream, BufferManager bufferManager, Int32 maxBufferSize, String contentType)
at System.ServiceModel.Channels.HttpInput.ReadChunkedBufferedMessage(Stream inputStream)
InnerException:
私は問題が何であるかを見つけるためにGoogleに多くの時間を費やしています。 XMLがBOM(Byte Order Mark)で始まってXMLReaderが例外をスローする原因となることがわかっただけです。
最後にここで私はメソッドを呼び出します:
mywebservice.wsobjectDLPortTypeClient mys = new mywebservice.wsobjectDLPortTypeClient();
try
{
string res;
// mys.Open();
res = mys.srvReq(sourcecode, destinationcode, date, time, count);
catch (Exception e)
{
//do something
}
どのような身体がこの問題を引き起こし、どのように私はそれを解決することができるのか知っていますか?