原帖地址: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都不行,实在没办法了,大家帮忙啊,谢谢了