webinfo.cpp 1.4 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980
  1. #include "webinfo.h"
  2. WebInfo::WebInfo(QWidget* parent)
  3. : SyncHttp(parent)
  4. {
  5. qDebug() << QSslSocket::sslLibraryBuildVersionString();
  6. }
  7. QString WebInfo::getTitle(QString url)
  8. {
  9. QByteArray ret;
  10. getHtmlData(url, ret);
  11. //qDebug() << code;
  12. QTextCodec::codecForHtml(ret);
  13. QString s = ret;
  14. QRegExp reg("<title>.{1,}</title>");
  15. for (int i = 0; i = reg.indexIn(s, i), i >= 0; i += reg.matchedLength())
  16. {
  17. QString s = reg.cap(0);
  18. s = s.replace("<title>", "");
  19. s = s.replace("</title>", "");
  20. return s;
  21. }
  22. return "";
  23. }
  24. QImage WebInfo::getFavicon(QString url, bool& isBmp)
  25. {
  26. QUrl u(url);
  27. QString protocol;
  28. if (url.indexOf("https") >= 0)
  29. {
  30. protocol = "https://";
  31. }
  32. else
  33. {
  34. protocol = "http://";
  35. }
  36. QString hostUrl = protocol + u.host() + "/favicon.ico";
  37. qDebug() << hostUrl;
  38. QByteArray ret;
  39. QImage img;
  40. int code = getHtmlData(hostUrl, ret);
  41. if (ret.size() == 0)
  42. {
  43. code = 0;
  44. }
  45. if (code == 200)
  46. {
  47. QBuffer buf(&ret);
  48. isBmp = this->isBmp(ret);
  49. if (isBmp)
  50. {
  51. img.load(&buf, "bmp");
  52. }
  53. else
  54. {
  55. img.load(&buf, "ico");
  56. }
  57. }
  58. return img;
  59. }
  60. bool WebInfo::isBmp(QByteArray& data)
  61. {
  62. if ((data[0] == 'B') && (data[1] == 'M'))
  63. {
  64. return true;
  65. }
  66. else
  67. {
  68. return false;
  69. }
  70. }