为什么我的 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";
}
问题始终出在以下几行
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;
}
}