在C#对Java web服务的请求中,头和请求之间的奇怪字符会阻止成功

在C#对Java web服务的请求中,头和请求之间的奇怪字符会阻止成功,c#,java,web-services,jakarta-ee,xml-serialization,C#,Java,Web Services,Jakarta Ee,Xml Serialization,我有一个C#方法,用于创建对基于Java的web服务的请求。我序列化我的类并将其发布到服务,它返回一个状态400,表明它找不到命名的根元素。当使用fiddler时,我接受请求并在Composer中手动构造它,然后处理它并成功。使用十六进制查看器,我注意到从C发出的请求在头和请求数据之间有以下字符EF BB BF。我在Fiddler中执行的剪切粘贴请求没有执行,并且成功了。由于我不太熟悉Java服务的构造,在处理请求时,找到一种让Java忽略字符的方法会更容易吗?或者在.Net中构建另一个序列化程

我有一个C#方法,用于创建对基于Java的web服务的请求。我序列化我的类并将其发布到服务,它返回一个状态
400
,表明它找不到命名的根元素。当使用fiddler时,我接受请求并在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
        ...
  }
那是UTF-8。它在那里是完全正确的

坦率地说,Java代码应该能够处理它,但修复它的最简单方法可能是指定您不希望在编码中使用它:

XmlTextWriter requestWriter = new XmlTextWriter(myRequestStream,
    new UTF8Encoding(encoderShouldEmitUTF8Identifier: false));

(如果您没有使用C#4或5,只需省略
编码器houldemitutf8identifier:
部分;这是一个命名参数,可以更清楚地了解参数值的用途。)

谢谢!像冠军一样工作。