为什么我的 HTTP 发布方法不接受 XML 字符

本文关键字:方法 不接受 XML 字符 我的 HTTP 布方法 为什么 | 更新日期: 2023-09-27 18:34:30

这里是函数:

 private void button6_Click(object sender, EventArgs e1)
    {
        string requestText = string.Format("strXMLData={0}", System.Web.HttpUtility.UrlEncode("<tag1>text</tag1>", e));
       string data = "strXMLData=%3c&strXMLFileName=text1.xml";  //Working I am //getting in service mathod <
string data = "strXMLData=%3e&strXMLFileName=text1.xml";  //Working I am getting in service mathod >
//string data = "strXMLData=%3c%3e&strXMLFileName=text1.xml"; //this is also working,I am getting in service mathod  
//string data = "strXMLData=%3ct%3e&strXMLFileName=text1.xml"; //this is not working,I am getting error 500, service mathod should revcive either same string or <t>
        byte[] dataStream = Encoding.GetEncoding("iso-8859-1").GetBytes(data);
        HttpWebRequest request = (HttpWebRequest)WebRequest.Create("http://localhost:52995/MyWebService.asmx/ReceiveXMLByContent");
        request.Method = "POST";
      request.ContentType = "application/x-www-form-urlencoded";
       // request.ContentType = "multipart/form-data";
        request.ContentLength = dataStream.Length;
        Stream newStream = request.GetRequestStream();
        newStream.Write(dataStream, 0, dataStream.Length);
        newStream.Close();
        var reader = new System.IO.StreamReader(request.GetResponse().GetResponseStream());
        string dataReturn = reader.ReadToEnd();
    }

在上面的代码中,我写了 3 个案例,其中两个有效,第三个案例

string data = "strXMLData=%3ct%3e&strXMLFileName=text1.xml"; //this is not working,I am getting error 500, service mathod should revcive either same string or <t>  

不起作用,你能解释为什么它不传递 xml 字符串,我正在尝试传递

<tag1>
value
</tag1>

由于我们无法在没有编码的情况下传递 xml,所以我使用

  string requestText = string.Format( System.Web.HttpUtility.UrlEncode("<tag1>text</tag1>", e)); //which returns %3ctag1%3etext%3c%2ftag1%3e  

你能解释一下如何传递XML字符串..吗?没有收到错误 500

这是网络服务方法

  [WebMethod]
  public string ReceiveXMLByContent(string strXMLData, string strXMLFileName)
    {
        string b = System.Web.HttpUtility.UrlDecode(strXMLData);            
        return "worked";
    }

为什么我的 HTTP 发布方法不接受 XML 字符

问题始终出在以下几行

        byte[] dataStream = Encoding.GetEncoding("iso-8859-1").GetBytes(data);
        HttpWebRequest request = (HttpWebRequest)WebRequest.Create("http://localhost:52995/MyWebService.asmx/ReceiveXMLByContent");
        request.Method = "POST";
        request.ContentType = "application/x-www-form-urlencoded";
        request.ContentType = "multipart/form-data";

确保请求。ContentType 特别合适,如以下语法所示:

        request.ContentType = "text/xml; charset='"utf-8'"; action='"HeaderName'";";

确保使用如下所示的尝试和捕获方法:

 private void button6_Click(object sender, EventArgs e1)
 {
   string GetHttpPost = string.Empty;
   GetHttpPost = CallHTTPPostMethod(); 
 }
 public string CallHTTPPostMethod()
 {
   try
   {
     //Your code
     return YourResponseXMLInStringFormat;
   }
   catch(Exception wex)
   {
     string pageContent = new StreamReader(wex.Response.GetResponseStream()).ReadToEnd().ToString();
     return pageContent;
   } 
  }