C# HttpWebRequest webservice调用返回的请求格式无效:text/xml;字符集=UTF-8

C# HttpWebRequest webservice调用返回的请求格式无效:text/xml;字符集=UTF-8,c#,C#,尝试使用HTTPWebRequest调用WebService并发布数据,结果导致请求格式无效,我在客户端和WebService中都添加了http动词post,有什么想法吗 HttpWebRequest request = (HttpWebRequest)HttpWebRequest.Create("http://localhost/WS/test.asmx/GetData"); String xmlString = "Montreal"; ASCIIEncoding encoding = ne

尝试使用HTTPWebRequest调用WebService并发布数据,结果导致请求格式无效,我在客户端和WebService中都添加了http动词post,有什么想法吗

HttpWebRequest request = (HttpWebRequest)HttpWebRequest.Create("http://localhost/WS/test.asmx/GetData");
String xmlString =  "Montreal";
ASCIIEncoding encoding = new ASCIIEncoding();
byte[] bytesToWrite = encoding.GetBytes(xmlString);
request.Method = "POST";
request.ContentLength = bytesToWrite.Length;
request.ContentType = "text/xml;charset=UTF-8";
Stream newStream = request.GetRequestStream();
newStream.Write(bytesToWrite, 0, bytesToWrite.Length);
newStream.Close();  //fails here with error message Request format is invalid: text/xml;charset=UTF-8.
HttpWebResponse response = (HttpWebResponse)request.GetResponse();
Stream dataStream = response.GetResponseStream();
StreamReader reader = new StreamReader(dataStream);
string responseFromServer = reader.ReadToEnd();
Console.WriteLine(responseFromServer);

我不得不修改方法,这对我来说很有效

HttpWebRequest request = (HttpWebRequest)HttpWebRequest.Create("http://localhost/WS/test.asmx");
String xmlData = "Montréal";
String xmlString = "<soapenv:Envelope xmlns:soapenv=\"http://schemas.xmlsoap.org/soap/envelope/\" xmlns:tem=\"http://tempuri.org/\"><soapenv:Header/>  <soapenv:Body><tem:GetData><tem:data>" + xmlData + "</tem:data></tem:GetData></soapenv:Body></soapenv:Envelope>";
byte[] bytesToWrite = Encoding.UTF8.GetBytes(xmlString);
request.Method = "POST";
request.ContentLength = bytesToWrite.Length;
request.ContentType = "text/xml;charset=UTF-8;";
Stream newStream = request.GetRequestStream();
newStream.Write(bytesToWrite, 0, bytesToWrite.Length);
newStream.Close();
try
{
    HttpWebResponse response = (HttpWebResponse)request.GetResponse();
    Stream dataStream = response.GetResponseStream();
    StreamReader reader = new StreamReader(dataStream);

    string responseFromServer = reader.ReadToEnd();
    Console.WriteLine(responseFromServer);
}
catch (Exception ex)
{
    string msg = ex.Message;
}
HttpWebRequest请求=(HttpWebRequest)HttpWebRequest.Create(“http://localhost/WS/test.asmx");
字符串xmlData=“Montréal”;
字符串xmlString=“”+xmlData+”;
byte[]bytesToWrite=Encoding.UTF8.GetBytes(xmlString);
request.Method=“POST”;
request.ContentLength=bytesToWrite.Length;
request.ContentType=“text/xml;charset=UTF-8;”;
Stream newStream=request.GetRequestStream();
Write(bytesToWrite,0,bytesToWrite.Length);
newStream.Close();
尝试
{
HttpWebResponse=(HttpWebResponse)request.GetResponse();
Stream dataStream=response.GetResponseStream();
StreamReader=新的StreamReader(数据流);
字符串responseFromServer=reader.ReadToEnd();
Console.WriteLine(responseFromServer);
}
捕获(例外情况除外)
{
字符串msg=例如消息;
}

您没有向流中写入有效的XML…您还使用了UTF-8内容类型,但使用的是ASCII编码。