当前位置:  编程技术>.net/c#/asp.net

asp.net读取QQ相册的实现代码

    来源: 互联网  发布时间:2014-08-30

    本文导语:  1,aspx代码部分   代码示例:     读取QQ相册_www.             QQ号码:                                                                                        ...

1,aspx代码部分
 

代码示例:





    读取QQ相册_www.


   
   


   

QQ号码:
               


           
           


               
                   
                       


                           

                           

                       

                   
               
               
                   
                       

                           

                           

                               

                       

                   
                   
                       

                           

                   
               
           

   

   

2,.cs代码部分
 

代码示例:

using System;
using System.Data;
using System.Configuration;
using System.Collections;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Web.UI.HtmlControls;
using System.Net;
using System.IO;
using System.Xml;
using System.Drawing.Imaging;
public partial class GetPhoto : System.Web.UI.Page
{
    private const string QQPHOTO = "http://p{0}.photo.qq.com/{1}/16"; //{0} = {1} % 13 + 1 {1}为qq号
    //取相册的另一个有用路径,在第一个可用的情况下用。
    private const string QQPHOTO_B = "http://photo.qq.com/cgi-bin/common/cgi_list_album?uin={0}";
    private const string ALBUMURL = "http://sz.photo.store.qq.com/http_staload.cgi?{0}/{1}"; //{0}qq号 {1}album号

    private string UserID = "maxwell"; //用户名

    protected void Page_Load(object sender, EventArgs e)
    {
        //点击“开始导入”时 把打勾的图片保存到本机上。
        picList.UpdateCommand += new DataListCommandEventHandler(picList_UpdateCommand);

        //取url参数中的相册图片 即取qq相册   QQ有防盗链
        if (Request.QueryString["pre"] != null)
        {
            string url = Request.QueryString["pre"];

            WebRequest preR = WebRequest.Create(url);
            Stream stream = preR.GetResponse().GetResponseStream();
            //QQ相册只能上传jpg|gif|png的图片
            //把这些图片保存为jpeg格式和ContentType设置为image/jpeg都能显示。
            Response.ClearContent();
            Response.ContentType = "image/jpeg";

            System.Drawing.Bitmap img = new System.Drawing.Bitmap(stream);
            img.Save(Response.OutputStream, ImageFormat.Jpeg);

            img.Dispose();
            stream.Close();

            Response.End();
        }
        //根据相册ID取该相册中的图片。
        if (Request.QueryString["id"] != null && Request.QueryString["qq"] != null)
        {
            string id = Request.QueryString["id"];
            string qq = Request.QueryString["qq"];
            string albumUrl = string.Format(ALBUMURL, qq, id);

            XmlDocument xml = GetXmlData(albumUrl);
            if (xml == null)
            {
                msg.Text = "暂时不能读取数据。请稍后再试。";
                return;
            }
            XmlNodeList list = xml.GetElementsByTagName("pic");

            PicAlbum[] pics = new PicAlbum[list.Count];

            for (int i = 0; i < list.Count; i++)
            {
                string name = list[i].SelectSingleNode("name").InnerText;
                string pre = list[i].SelectSingleNode("pre").InnerText;
                string url = list[i].SelectSingleNode("url").InnerText;

                string picLink = "";
                pics[i] = new PicAlbum(url, picLink, name);
            }
            albumList.Visible = false;
            picList.Visible = true;
            picList.DataSource = pics;
            picList.DataBind();
        }
    }

    //读取相册
    protected void Button1_Click(object sender, EventArgs e)
    {
        string qq = txtQQ.Text;
        string photoUrl = string.Format(QQPHOTO, (int.Parse(qq) % 13 + 1), qq);

        //从QQ读取相册数据
        XmlDocument xml = GetXmlData(photoUrl);
        if (xml == null)
        {
            //判断静态XML是否取到,如果未取到,再尝试拉一次CGI(QQ的说法)
            string photoBackupUrl = string.Format(QQPHOTO_B, qq);
            xml = GetXmlData(photoBackupUrl);
            if (xml == null)
            {
                msg.Text = "暂时不能读取数据。请稍后再试。";
                return;
            }
        }
        XmlNodeList list = xml.GetElementsByTagName("album");

        ArrayList albums = new ArrayList();
        for (int i = 1; i < list.Count; i++)//从1开始,是因为xml文件的第一个album不是相册数据。
        {
            string priv = list[i].SelectSingleNode("priv").InnerText.Trim();
            if (priv != "1")
                continue;
            string id = list[i].SelectSingleNode("id").InnerText;
            string name = list[i].SelectSingleNode("name").InnerText;
            string pre = list[i].SelectSingleNode("pre").InnerText;

            string picLink = "";
            albums.Add(new PicAlbum(id, picLink, name));

        }
        picList.Visible = false;
        albumList.Visible = true;
        albumList.DataSource = albums;
        albumList.DataBind();
    }

     /**////
        /// 根据地址得到一个xml文档
        ///
        /// 地址
        ///
        private XmlDocument GetXmlData(string url)
        {
            HttpWebRequest wreq = (HttpWebRequest)WebRequest.Create(url);
            //wreq.Timeout = 20;
            HttpWebResponse wres = null;
            XmlDocument xml = null;
            try
            {
                wres = (HttpWebResponse)wreq.GetResponse();
                xml = new XmlDocument();
                xml.Load(wres.GetResponseStream());
            }
            finally
            {
                wres.Close();
            }
            return xml;
        }

    protected void picList_UpdateCommand(object source, DataListCommandEventArgs e)
    {
         DataList picList = source as DataList;
            PicAlbum[] pics = (PicAlbum[])picList.DataSource;
            ArrayList urls = new ArrayList(); //用来保存要导入图片的地址。
            for(int i=0; i


    
 
 

您可能感兴趣的文章:

  • asp.net读取本地与全局资料文件的代码
  • asp.net读取txt文件内容的代码
  • ASP.NET中上传并读取Excel文件数据示例
  • asp.net上传并读取Excel文件的例子
  • asp.net读取与写入cookie的小例子
  • asp.net 全局变量的设置与读取的方法
  • asp.net读取与删除磁盘文件的实例代码
  • asp.net连接数据库读取数据示例分享
  • asp.net 自定义用户控件数据读取及赋值实例
  • asp.net xml读取、写入示例代码
  • asp.net读取excel中的数据并绑定在gridview
  • asp.net使用npoi读取excel模板并导出下载详解
  • asp.net读取excel文件的三种方法示例
  • c#/ASP.NET操作cookie(读写)代码示例
  • ??谁能把ASP代码改为JSP的
  • asp.net文字水印功能简单代码
  • asp连接sql server 2005的代码
  • asp.net 获取目录中图片的代码
  • asp.net正则表达式提取中文的代码示例
  • 如何在ASP的frame框架中屏蔽右键,以防止查看页面的源代码?
  • asp 正则 过滤重复字符串的代码
  • asp正则过滤重复字符串的代码
  • asp去掉html,保留img br p div的正则实现代码
  • asp.net使用mshtml处理html的代码
  • asp.net 判断当前日期是该年中第几周的代码
  • asp.net中利用正则表达式判断一个字符串是否为数字的代码
  • asp.net弹出消息框、确认框的代码汇总
  • asp.net 获取ashx中数据的代码
  • asp.net防止页面刷新重复提交的代码
  • asp.net文件分块下载的实现代码
  • asp.net 正则表达式匹配图片路径的实现代码
  •  
    本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
    本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。












  • 相关文章推荐
  • 在ASP中可以轻易实现,不知道在JSP中能否实现?
  • Linux平台下哪种方法实现ASP好?
  • 求解!Java如何能在多个applet之间实现类似asp的session类!
  • 调试jsp的时如何实现像asp中的response.end的效果
  • 怎么用能让asp实现统计在线人数的功能。在线等待!!!帮忙送分!
  • 在jsp 中如何实现像asp 中的页面弹出式的菜单
  • asp.net 参数不同共用一个页面的实现方法
  • Asp.net防止重复提交的实现方法
  • 用linux做服务器运行ASP.net网站,请问具体怎样实现??
  • ASP.NET MVC3 实现全站重定向的简单方法
  • 在jsp中如何实现与asp中的Request.ServerVariables("SCRIPT_NAME")同等的功能?
  • Jsp中怎么实现类似ASP中split函数的功能?
  • 如何实现ASP中类似Global.asa的功能???
  • jsp中如何实现asp中的response.end,或php中的exit()功能?
  • java实现的asp服务器 OpenASP
  • ASP的功能在JSP中怎么实现呀?谢谢!!!
  • asp.net 实现php的md5()函数功能
  • asp.net session实现用户登录的疑问
  • 怎样将Tomcat嵌入IIS中,实现用ASP与JSP都用IIS来做!
  • asp.net后台弹窗怎么实现
  • ASP.NET之 Ajax相关知识介绍及组件图
  • 我想了解一些关于Java怎样与Asp或Asp.net结合方面在未来发展方向的问题?
  • asp.net UrlEncode对应asp urlencode的处理方法
  • asp.net实例 定义和使用asp:AccessDataSource
  • win2008 r2 服务器环境配置(FTP/ASP/ASP.Net/PHP)
  • asp与asp.net的session共享
  • 如何在unix下发布asp?
  • 怎么让Apache支持Asp?
  • ASP和ASP.Net共享Session解决办法
  • 通过socket和asp打交道
  • 犹豫中……,到底是选择ASP,还是JSP?




  • 特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

    ©2012-2021,,E-mail:www_#163.com(请将#改为@)

    浙ICP备11055608号-3