• 用ASP.NET读取QQ相册 (转载)


    最近遇到要读取QQ相册的问题,所以自己诼磨了下,把读取相册的思路和代码写下来。 

          很多网站到图片链接都做了盗链处理。意思是如果你想在不是他的网站上引用图片就不会正确显示图片,而是一张其它的版权说明之类的图片。实现防盗链的一般做好是通过判断Request的Headers中的Referer属性。该属性保存着客户端在访问该链接之前的地址。又如我访问http://www.domain.com/,该网站中有一张图片<img src='http://www.qq.com/logo.gif'> ,该图片请求的Referer属性就应该是http://www.domain.com/ 表示是从该地址转过来的。

          要突破这种防盗链,你可以在发请求这前修改Referer属性,不过这有点难度。因为这个属性是只读的。另外一种做法是用程序的方式(在ASP.NET中即HttpWebRequest)来新建一个请求,些时Referer是空的,所以防盗链也就不起作用。

         QQ相册取图片的方式隐藏得很好,是用Ajax方式读取的,js脚本文件也进行了压缩,所以很难看清它是怎么取图片的。看了很久之后才发现它读相册以及相册中图片的地址:
      相册地址:http://p{0}.photo.qq.com/{1}/16  //{0} = {1} % 13 + 1 {1}为qq号
      图片地址:http://sz.photo.store.qq.com/http_staload.cgi?{0}/{1} ; //{0}qq号 {1}相册号
    这两个地址只是返回一个XML文件,文件中才标识着真正的图片地址。

         程序的思路是先通过QQ号得到相册相关信息的xml文件,从文件中得到相册号和相册封面图片地址,用HttpWebRequest得到该封面图片并显示出来。当用户点击该图片时再根据相册号得到该相册下图片信息的xml文件,再次用HttpWebRequest的方式显示预览图片,供用户选择要导入的图片,最好根据图片的真正地址把图片保存在当前文件夹中。

         把程序贴在下面,一个面页GetPhoto.aspx和后台代码GetPhoto.aspx.cs

    GetPhoto.aspx

    Code


    用了两个DataList 一个用来显示相册图片,一个用来显示相册中的图片。

    后台代码GetPhoto.aspx.cs  稍微有点长

    Code
  • 相关阅读:
    mysql 实现 start with
    [URLSession sessionWithConfiguration:config delegate:self delegateQueue:[NSOperationQueue mainQueue]
    163邮箱报错WARN: 535 Error: authentication failed.
    iOS开发SDWebImageOptions理解
    Core Graphices 设置渐变
    iOS 解压Assets.car文件
    Core Graphices 获取上下文
    2019春第五周作业
    2019年春季学期第4周作业.
    2019年春季学期第4周作业
  • 原文地址:https://www.cnblogs.com/Tonyyang/p/1322688.html
Copyright © 2020-2023  润新知