private void button3_Click(object sender, System.EventArgs e)
  {
   
   if(textBox3.Text=="")
   {
    MessageBox.Show("必须填写当前的查询的QQ号码!","错误提示!");
    textBox3.Focus();
    return;    
   }
   else
   {
    string strQQ=textBox3.Text.Trim();
    string strSearchQQ="http://wpa.qq.com/pa?p=1:"+strQQ+":3";
    string strQQStatus=GetWebContent(strSearchQQ).Substring(0,7);
    switch(strQQStatus)
    {
     case "GIF89aq":MessageBox.Show(strQQ+"不在线","QQ状态提示!");
      break;
     case "GIF89aQ":MessageBox.Show(strQQ+"在线","QQ状态提示!");
      break;           
    } 
   }
  }
//调用函数
//根据Url地址得到网页的html源码
  private string GetWebContent(string Url)
  {
   string strResult="";
   try
   {
    HttpWebRequest request = (HttpWebRequest)WebRequest.Create(Url);
    //声明一个HttpWebRequest请求
    request.Timeout = 30000;
    //设置连接超时时间
    request.Headers.Set("Pragma", "no-cache");
    HttpWebResponse response = (HttpWebResponse)request.GetResponse();
    Stream streamReceive = response.GetResponseStream();
    Encoding encoding = Encoding.GetEncoding("GB2312");
    StreamReader streamReader = new StreamReader(streamReceive, encoding);
    strResult = streamReader.ReadToEnd();
   }
   catch
   {
    MessageBox.Show("出错");
   }
   return strResult;
  }
用这个url:http://wpa.qq.com/pa?p=1:qq号码:3,无论要检测的qq号是否在线返回值总是GIF89aQ,但在浏览器里直接输入url却是不同的内容,百思不得其解,忘达人解答,不胜感激!

解决方案 »

  1.   

    你这样返回的是GIF的二进制代码内容,你检索到的是GIF文件的头信息.不如向后多检索几个字节来比较.
    如下图:
      

  2.   

    检测在线,返回值是图片。在线就返回的在线图片,不在线就返回灰色图片。
    http://wpa.qq.com/pa?p=1:qq号码:3  最后面这个3表示返回图片的类型。正是因为最后一位数字的设置不同,让你看到了不同的返回值,但是那个返回值不是表示在线状态的。可以设置1-50.
      

  3.   

    返回的只是图片,在线状态返回在线的图片,离线时返回的是灰色图片。
    http://wpa.qq.com/pa?p=2:QQ号码:3,最后这个3只是设置返回图片的形式,可以设置1-50.