我正在尝试将xml发送到第三方通过c#.NET应用程序提供给我的基于java的Web服务,并且我得到了org.xml.sax.SAXParseException:prolog错误中不允许使用内容.
我已经针对模式验证了xml,并且我传递了用于将xml保存到.xml文件的内存流,然后使用十六进制编辑器打开文件以确保prolog中没有不需要的字符,并且没有.打开时,文件中的第一个字符是
<?xml version="1.0" encoding="utf-8"?>
我用来将xml数据发送到Web服务的类接受一个字节数组.我认为使用XmlTextWriter创建xml到utf-8编码的内存流,然后将流的内容发送到字节数组是最直接的方法.
我已经做了很多研究并尝试了我能找到的这个问题的所有可能性,但没有任何效果.有人可以帮忙吗?提前致谢.
顺便说一句,这是Web服务返回给我的部分内容.在SOAP消息的有效载荷中,元素之后的数据应该是那样,还是像之前的内容那样可读xml?
Messages:
Message:
Payload: <?xml version="1.0" encoding="utf-8"?><soap:Envelope xmlns:soap="http:/
/schemas.xmlsoap.org/soap/envelope/" xmlns:xsi="http://www.w3.org/2001/XMLSchema
-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema"><soap:Body><postSubmissi
on xmlns="http://service.arm.hud.gov/"><submissionHeader><agcHcsId>1</agcHcsId><
agcName>test</agcName><systemName>123</systemName><cmsSubId>123456</cmsSubId><su
bFlag>0</subFlag></submissionHeader><agcType>test</agcType><submissionData>PD94b
WwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz48dG5zOlN1Ym1pc3Npb25EYXRhIHhzaTpzY
2hlbWFMb2NhdGlvbj0iaHR0cDovL2dvdi5odWQuYXJtL2FybV9kYXRhYmFnXzNfMS54c2QiIHhtbG5zO
nhzaT0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxT......etc............................
</submissionData></postSubmission></soap:Body></soap:Envelope>
这里是xml数据以获得更好的可读性:
<?xml version="1.0" encoding="utf-8"?>
<soap:Envelope xmlns:soap="http:/
/schemas.xmlsoap.org/soap/envelope/"
xmlns:xsi="http://www.w3.org/2001/XMLSchema
-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
<soap:Body>
<postSubmissi on xmlns="http://service.arm.hud.gov/">
<submissionHeader>
<agcHcsId>1</agcHcsId>
<agcName>test</agcName>
<systemName>123</systemName>
<cmsSubId>123456</cmsSubId>
<subFlag>0</subFlag>
</submissionHeader>
<agcType>test</agcType>
<submissionData>PD94b
WwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz48dG5zOlN1Ym1pc3Npb25EYXRhIHhzaTpzY
2hlbWFMb2NhdGlvbj0iaHR0cDovL2dvdi5odWQuYXJtL2FybV9kYXRhYmFnXzNfMS54c2QiIHhtbG5zO
nhzaT0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxT......etc............................
</submissionData>
</postSubmission>
</soap:Body>
</soap:Envelope>
解决方法:
我能够通过删除UTF编码来摆脱这个问题.听起来像在我们的两种情况下,文本实际上不是UTF-8编码的.