我有一个 C# 方法,可以创建对基于 Java 的 Web 服务的请求。我序列化我的类并将其发布到服务,它返回一个状态400
,表明它找不到命名的根元素。使用提琴手时,我接受请求并在 Composer 中手动构造它并处理它,它成功了。使用十六进制查看器,我注意到从 C# 发出的请求在标头和请求数据之间具有以下字符EF BB BF
. 我在 Fiddler 中执行的剪切和粘贴请求没有,它成功了。由于我不精通 Java 服务的构建,是否更容易找到一种方法来告诉 Java 在处理请求时忽略字符,或者在 .Net 中构建另一个序列化程序更容易?我无意在这里发动一场宗教战争,只是为了尽快找到解决办法。
序列化的代码如下所示:
//seralize the Request
XmlSerializer msgSerializer = new XmlSerializer(Msg.GetType());
try
{
request = (HttpWebRequest)WebRequest.Create(_endpoint);
request.Method = "POST";
request.KeepAlive = true;
request.SendChunked = true;
using (Stream myRequestStream = request.GetRequestStream())
{
XmlTextWriter requestWriter = new XmlTextWriter(myRequestStream, Encoding.UTF8);
msgSerializer.Serialize(requestWriter, Msg);
myRequestStream.Close();
}
response = request.GetResponse();
}
catch (WebException webE)
{
//Yada Yada Yada
...
}