将数据作为XML数据发送,位置问题

HttpWebRequest 的这三个属性均应该在请求流写入之前。

将数据作为XML数据发送,例如:

request.Method = “POST”;
request.ContentType = “application/x-www-form-urlencoded”;
request.ContentLength = postBuffer.Length;
using (Stream requestStream = request.GetRequestStream())
{
    requestStream.Write(postBuffer, 0, postBuffer.Length);
    requestStream.Close();
}

 

  • 如果 Method 在 requestStream.Write
    之后设置,则会出现“无法发送具有此谓词类型的内容正文”的错误;
  • 如果 ContentType 在 requestStream.Write
    之后设置,则无法正确提交数据;
  • 官方澳门新永利下载,如果 ContentLength 在 requestStream.Write
    之后设置,则会出现“写入开始后不能设置此属性”的错误。

官方澳门新永利下载 1public void PostXml(string url, string xml)
官方澳门新永利下载 2
官方澳门新永利下载 3   byte[] bytes = Encoding.UTF8.GetBytes(xml); 
官方澳门新永利下载 4   HttpWebRequest request = (HttpWebRequest) WebRequest.Create(url); 
官方澳门新永利下载 5   request.Method = “POST”; 
官方澳门新永利下载 6   request.ContentLength = bytes.Length; 
官方澳门新永利下载 7   request.ContentType = “text/xml”; 
官方澳门新永利下载 8   using (Stream requestStream = request.GetRequestStream()) { 
官方澳门新永利下载 9     requestStream.Write(bytes, 0, bytes.Length); 
官方澳门新永利下载 10   } 
官方澳门新永利下载 11
官方澳门新永利下载 12   HttpWebResponse response = (HttpWebResponse) request.GetResponse(); 
官方澳门新永利下载 13   if (response.StatusCode != HttpStatusCode.OK) { 
官方澳门新永利下载 14     string message = String.Format(“POST failed. Received HTTP {0}”, 
官方澳门新永利下载 15     response.StatusCode); 
官方澳门新永利下载 16     throw new ApplicationException(message); 
官方澳门新永利下载 17   } 
官方澳门新永利下载 18}

接收端通过Request.InputStream读取:

 

 

发表评论

电子邮件地址不会被公开。 必填项已用*标注