快速业务通道

ASP.NET读取QQ相册获取图片的代码

作者 佚名技术 来源 NET编程 浏览 发布时间 2012-04-11

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

      要突破这种防盗链,你可以在发请求之前修改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
 

  1. <%@ Page language="c#"  CodeFile="GetPhoto.aspx.cs" AutoEventWireup="false" InherITs="GetPhoto" %>
     

  2.  
  3. <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN" >
     
  4. <HTML>
     
  5.     <HEAD>
     
  6.         <title>GetPhoto</title>
     
  7.         <meta content="Microsoft Visual Studio .NET 7.1" name="GENERATOR">
     
  8.         <meta content="C#" name="CODE_LANGUAGE">
     
  9.         <meta content="JavaScript" name="vs_defaultClientScript">
     
  10.         <meta content="http://schemas.microsoft.com/intellisense/ie5" name="vs_targetSchema">
     
  11.     </HEAD>
     
  12.     <body>
     
  13.         <form id="Form1" method="post" runat="server">
     
  14.             <P>QQ号码:<asp:textbox id="txtQQ" runat="server"></asp:textbox>
     

凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢!

分享到: 更多

Copyright ©1999-2011 厦门凌众科技有限公司 厦门优通互联科技开发有限公司 All rights reserved

地址(ADD):厦门软件园二期望海路63号701E(东南融通旁) 邮编(ZIP):361008

电话:0592-5908028 传真:0592-5908039 咨询信箱:web@lingzhong.cn 咨询OICQ:173723134

《中华人民共和国增值电信业务经营许可证》闽B2-20100024  ICP备案:闽ICP备05037997号