asp.net 发送 xml post请求和接收 xml post请求时出现(500) 内部服务器错误的解决办法

代码下载地址:http://d.download.youkuaiyun.com/down/1396963/slimboy123

 

在.net中发送 xml post请求和接受xml 的post请求时,经常会遇到“远程服务器返回错误: (500) 内部服务器错误”。这里有2种解决办法:

 

第一种:修改请求端Content-Type 为“text/xml”(httpclient.Headers.Add("Content-Type", "text/xml");)

代码如下:
 



调用:
string strUrl = http://localhost/testxml/Default.aspx;

string strParams = @"<?xml version=""1.0"" encoding=""UTF-8"" ?><channel><title>blogweather</title></channel>";

string returnValue = HttpClient.PostXmlData(strUrl, strParams, Encoding.UTF8, Encoding.UTF8);


这种方法适用于接收端是不同语言开发的web服务(jsp,php,asp.net等)


第二种:在我们平常开发异步接口的时候,往往需要开发一个windows service用来发送post请求(可以调用第一种方法);另外需要提供一个web接收端接收对方的异步调用。当接收的post数据是xml时,对方调用你的提供的接口是就会出现“远程服务器返回错误: (500) 内部服务器错误。”。
这是请求验证所导致的,只需要禁用掉请求验证就可以正常通讯了。在<@Page..%>中设置 ValidateRequest="false" 即可。(这里无需修改Content-type)

 

 

 

 请求端调用:

 

string strUrl = http://localhost/testxml/Default2.aspx;

string strParams = @"<?xml version=""1.0"" encoding=""UTF-8"" ?><channel><title>blogweather</title></channel>";

string returnValue = HttpClient.PostData(strUrl, strParams, Encoding.UTF8, Encoding.UTF8);

 

或者

 

string returnValue = HttpClient.PostXmlData(strUrl, strParams, Encoding.UTF8, Encoding.UTF8);

 

 

接收post xml 请求:

string request;
            using (Stream MyStream = Request.InputStream)
            {
                byte[] _tmpData = new byte[MyStream.Length];
                MyStream.Read(_tmpData, 0, _tmpData.Length);
                request = Encoding.UTF8.GetString(_tmpData);
            }
            Response.Write(request);

 

 

 

源代码下载地址:http://d.download.youkuaiyun.com/down/1396963/slimboy123

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值