CSDN首页 空间 新闻 论坛 Blog 下载 读书 网摘 搜索 .NET Java 视频 接项目 求职 在线学习 买书 程序员 通知
可用分押宝游戏火热进行中... 专题改版:Java Web 专题
CSDN社区
搜索 收藏 打印 关闭
CSDN社区 >  .NET技术 >  C#

问了一次没人答,再问,可惜没分了,希望大家帮忙

楼主zjzty444()2006-06-01 08:50:36 在 .NET技术 / C# 提问

原帖地址:http://community.csdn.net/Expert/topic/4792/4792029.xml?temp=.3838465  
   
  我想程序通过url地址取得网站内容。代码如下:  
  private   static   string   getPage(String   url,String   payload)  
  {  
  StringBuilder   strRet   =   new   StringBuilder();  
  WebResponse   result   =   null;  
  try  
  {  
  WebRequest   req   =   WebRequest.Create(url);  
  req.Method   =   "POST";  
  req.ContentType   =   "application/x-www-form-urlencoded";  
  StringBuilder   UrlEncoded   =   new   StringBuilder();  
  Char[]   reserved   =   {'?',   '=',   '&'};  
  byte[]   SomeBytes   =   null;  
   
  if   (payload   !=   null)  
  {  
  int   i=0,   j;  
  while(i<payload.Length)  
  {  
  j=payload.IndexOfAny(reserved,   i);  
  if   (j==-1)  
  {  
  UrlEncoded.Append(payload.Substring(i,   payload.Length-i));  
  break;  
  }  
  UrlEncoded.Append(payload.Substring(i,   j-i));  
  UrlEncoded.Append(payload.Substring(j,1));  
  i   =   j+1;  
  }  
  SomeBytes   =   Encoding.Default.GetBytes(UrlEncoded.ToString());  
  req.ContentLength   =   SomeBytes.Length;  
  Stream   newStream   =   req.GetRequestStream();  
  newStream.Write(SomeBytes,   0,   SomeBytes.Length);  
  newStream.Close();  
  }  
  else  
  {  
  req.ContentLength   =   0;  
  }  
  result   =   req.GetResponse();  
  Stream   ReceiveStream   =   result.GetResponseStream();  
  Encoding   encode   =   System.Text.Encoding.Default;  
  StreamReader   sr   =   new   StreamReader(   ReceiveStream,   encode   );  
  Char[]   read   =   new   Char[256];  
  int   count   =   sr.Read(   read,   0,   256   );  
  while   (count   >   0)  
  {  
  String   str   =   new   String(read,   0,   count);  
  strRet.Append(str);  
  count   =   sr.Read(read,   0,   256);  
  }  
  }    
  catch  
  {  
  }    
  finally  
  {  
  if   (   result   !=   null   )  
  {  
  result.Close();  
  }  
  }  
  return   strRet.ToString();  
  }  
  去大部分网站都可以,可是http://www.cma.gov.cn/cma_new/tqyb/gn_city.php?city=上海  
  这个却不行,取到的网站内容不是“上海”的信息,而是“北京”的信息,我发现如果没有city这个参数默认的就是北京,所以可能问题出在这个参数上,  
  这是我的调用代码:getPage("http://www.cma.gov.cn/cma_new/tqyb/gn_city.php","city="+System.Web.HttpUtility.UrlEncode("上海",Encoding.Default))  
  getPage("http://www.cma.gov.cn/cma_new/tqyb/gn_city.php?city="+System.Web.HttpUtility.UrlEncode("上海",Encoding.Default),"")  
   
  我知道传中文参数要处理,可是试了Default、UTF8、Unicode都不行,实在没办法了,大家帮忙啊,谢谢了 问题点数:10、回复次数:5Top

1 楼Knight94(愚翁)回复于 2006-06-01 09:06:52 得分 0

你可以用gb2312编码试一下。  
  例如:  
  System.Web.HttpUtility.UrlEncode("上海",Encoding.GetEncoding("gb2312"),""   )Top

2 楼Knight94(愚翁)回复于 2006-06-01 09:07:17 得分 0

如果还不行,你最好能了解一下php方支持什么编码。Top

3 楼zjzty444()回复于 2006-06-01 09:21:47 得分 0

Knight94  
  2312不行,php方常用的编码就这几个吧Top

4 楼Knight94(愚翁)回复于 2006-06-01 09:33:42 得分 0

你直接在IE中输入如下:  
  http://www.cma.gov.cn/cma_new/tqyb/gn_city.php?city=上海  
  是否可以呢Top

5 楼zjzty444()回复于 2006-06-01 09:45:36 得分 0

可以,在ie直接输没问题Top

相关问题

关键词

得分解答快速导航

  • 帖主:zjzty444

相关链接

  • CSDN .NET频道
  • .NET类图书
  • C#类图书
  • .NET类源码下载

广告也精彩

反馈

请通过下述方式给我们反馈
反馈
提问
网站简介|广告服务|VIP资费标准|银行汇款帐号|网站地图|帮助|联系方式|诚聘英才|English|问题报告
世纪乐知(北京)网络技术有限公司 版权所有, 京 ICP 证 020026 号
北京创新乐知广告有限公司 提供技术支持
Copyright © 2000-2007, CSDN.NET, All Rights Reserved
GongshangLogo