请高手赐教:在.net中通过HttpWebRequest向ASP页面中POST中文数据【"name=zhang帐张"】,asp中的request("name")出现乱码

guangjian 2003-04-09 11:45:35
源码:
asp部分:
<%@ codepage="936"%>
<%
response.ContentType = "text/xml"
Response.Write "<?xml version=" & AddQuotes("1.0") & " encoding=" & AddQuotes("gb2312") & "?>"
Response.Write "<a" & request("name") & "/>"
function AddQuotes(sText)
AddQuotes = """" & sText & """"
end function
%>


.net部分:
string strUrl="http://willpower/aa.asp";

string strData="name=zhang帐张";//aa.asp待接收的数据
// 与前置端会话
try
{
HttpWebRequest req = (HttpWebRequest)WebRequest.Create(strUrl);
req.Method = "POST";
req.ContentType = "application/x-www-form-urlencoded";

//req.ContentType = "application/unkown";
//req.ContentType ="text/xml;charset=gb2312";
StringBuilder UrlEncoded = new StringBuilder();
int i=0, j;
Char[] reserved = {'?', '=', '&'};
byte[] SomeBytes = null;

#region 组织发送数据
while(i<strData.Length)
{
j=strData.IndexOfAny(reserved, i);
if (j==-1)
{
UrlEncoded.Append(HttpUtility.UrlEncode(strData.Substring(i, strData.Length-i)));
//UrlEncoded.Append(HttpUtility.UrlEncodeUnicode(strData.Substring(i, strData.Length-i)));
break;
}
UrlEncoded.Append(HttpUtility.UrlEncode(strData.Substring(i, j-i)));
//string dd=strData.Substring(j,1);
UrlEncoded.Append(strData.Substring(j,1));
i = j+1;
}
#endregion

#region Post数据到服务器
//SomeBytes = Encoding.Unicode.GetBytes(UrlEncoded.ToString());
SomeBytes =System.Text.UTF8Encoding.ASCII.GetBytes(UrlEncoded.ToString());

//SomeBytes = Encoding.UTF8.GetBytes(HttpUtility.UrlEncode(strData));

req.ContentLength = SomeBytes.Length;
Stream newStream = req.GetRequestStream();
newStream.Write(SomeBytes, 0, SomeBytes.Length);
newStream.Flush();
newStream.Close();
#endregion

#region 提取数据
HttpWebResponse result = (HttpWebResponse)req.GetResponse();
Stream ReceiveStream = result.GetResponseStream();
MemoryStream memStream = FilterStream(ReceiveStream);
ReceiveStream.Close();
result.Close();

XmlDocument xmldoc = new XmlDocument();
xmldoc.PreserveWhitespace = false;
xmldoc.Load(memStream);
string ss=xmldoc.InnerXml;
string ss1="";

#endregion
}
catch(Exception exp)
{

}
...全文
27 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
hqz010 2003-04-30
  • 打赏
  • 举报
回复
关注
Hominidclint 2003-04-12
  • 打赏
  • 举报
回复
将这段System.Text.UTF8Encoding.ASCII.GetBytes(UrlEncoded.ToString());
改掉,其编码方式有问题
flyfish51f 2003-04-09
  • 打赏
  • 举报
回复
web.config

<globalization requestEncoding="gb2312
" responseEncoding="gb2312" />
zwztu 2003-04-09
  • 打赏
  • 举报
回复
在你的web.config文件中将
<globalization requestEncoding="utf-8" responseEncoding="utf-8" />中的utf-8改为gb2312

62,046

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术交流专区
javascript云原生 企业社区
社区管理员
  • ASP.NET
  • .Net开发者社区
  • R小R
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

.NET 社区是一个围绕开源 .NET 的开放、热情、创新、包容的技术社区。社区致力于为广大 .NET 爱好者提供一个良好的知识共享、协同互助的 .NET 技术交流环境。我们尊重不同意见,支持健康理性的辩论和互动,反对歧视和攻击。

希望和大家一起共同营造一个活跃、友好的社区氛围。

试试用AI创作助手写篇文章吧