• 使用WebRequest对象调用新浪天气预报<转>


    // 待请求的地址
    string url = "http://www.cnblogs.com";
                 
    // 创建 WebRequest 对象,WebRequest 是抽象类,定义了请求的规定,
    // 可以用于各种请求,例如:Http, Ftp 等等。
    // HttpWebRequest 是 WebRequest 的派生类,专门用于 Http
    System.Net.HttpWebRequest request
        = System.Net.HttpWebRequest.Create(url) as System.Net.HttpWebRequest;
     
    // 请求的方式通过 Method 属性设置 ,默认为 GET
    // 可以将 Method 属性设置为任何 HTTP 1.1 协议谓词:GET、HEAD、POST、PUT、DELETE、TRACE 或 OPTIONS。
    request.Method = "POST";
     
    // 还可以在请求中附带 Cookie
    // 但是,必须首先创建 Cookie 容器
    request.CookieContainer = new System.Net.CookieContainer();
     
    System.Net.Cookie requestCookie
        = new System.Net.Cookie("Request", "RequestValue","/", "localhost");
    request.CookieContainer.Add(requestCookie);
     
    Console.WriteLine("请输入请求参数:");
     
    // 输入 POST 的数据.
    string inputData = Console.ReadLine();
     
    // 拼接成请求参数串,并进行编码,成为字节
    string postData = "firstone=" + inputData;
    ASCIIEncoding encoding = new ASCIIEncoding();
    byte[] byte1 = encoding.GetBytes(postData);
     
    // 设置请求的参数形式
    request.ContentType = "application/x-www-form-urlencoded";
     
    // 设置请求参数的长度.
    request.ContentLength = byte1.Length;
     
    // 取得发向服务器的流
    System.IO.Stream newStream = request.GetRequestStream();
     
    // 使用 POST 方法请求的时候,实际的参数通过请求的 Body 部分以流的形式传送
    newStream.Write(byte1, 0, byte1.Length);
     
    // 完成后,关闭请求流.
    newStream.Close();
     
    // GetResponse 方法才真的发送请求,等待服务器返回
    System.Net.HttpWebResponse response
        = (System.Net.HttpWebResponse)request.GetResponse();
     
    // 首先得到回应的头部,可以知道返回内容的长度或者类型
    Console.WriteLine("Content length is {0}", response.ContentLength);
    Console.WriteLine("Content type is {0}", response.ContentType);
     
    // 回应的 Cookie 在 Cookie 容器中
    foreach (System.Net.Cookie cookie in response.Cookies)
    {
        Console.WriteLine("Name: {0}, Value: {1}", cookie.Name, cookie.Value);
    }
    Console.WriteLine();
     
    // 然后可以得到以流的形式表示的回应内容
    System.IO.Stream receiveStream
        = response.GetResponseStream();    
     
    // 还可以将字节流包装为高级的字符流,以便于读取文本内容
    // 需要注意编码
    System.IO.StreamReader readStream
        = new System.IO.StreamReader(receiveStream, Encoding.UTF8);
     
    Console.WriteLine("Response stream received.");
    Console.WriteLine(readStream.ReadToEnd());
     
    // 完成后要关闭字符流,字符流底层的字节流将会自动关闭
    response.Close();
    readStream.Close();

    使用WebRequest对象调用新浪天气预报

    public string GetWeather(string city)
        {
            string weatherHtml = string.Empty;
            //转换输入参数的编码类型
            string cityInfo = HttpUtility.UrlEncode(city,System.Text.UnicodeEncoding.GetEncoding("GB2312"));
            //初始化新的webRequst
            HttpWebRequest weatherRequest = (HttpWebRequest)WebRequest.Create("http://php.weather.sina.com.cn/search.php?city="+cityInfo);
            
            HttpWebResponse weatherResponse = (HttpWebResponse)weatherRequest.GetResponse();
            //从Internet资源返回数据流
            Stream weatherStream = weatherResponse.GetResponseStream();
            //读取数据流
            StreamReader weatherStreamReader = new StreamReader(weatherStream,System.Text.Encoding.Default);
            //读取数据
            weatherHtml = weatherStreamReader.ReadToEnd();
            weatherStreamReader.Close();
            weatherStream.Close();
            weatherResponse.Close();
            //针对不同的网站查看html源文件
            return weatherHtml;
        }
  • 相关阅读:
    Python 魔术方法
    Python 类和对象-上
    Python 日期时间相关
    Python OS模块
    Python文件操作
    Python集合操作
    Python字典操作
    为什么最小帧长度是64字节
    字典_ 三级菜单
    cart_购物车小程序
  • 原文地址:https://www.cnblogs.com/mn-b/p/5156632.html
Copyright © 2020-2023  润新知