All pastes #920742 Raw Edit

Http using

public text v1 · immutable
#920742 ·published 2008-02-27 16:09 UTC
rendered paste body
#define CONNECTION_REFUSED_TIME 20000

QImage getImage(QString qstrLogin,QString qstrDomain,bool flgBig)
{
   QString qstrDelimeter="/",qstrBig  ="_mrimavatar",
           qstrSmall="_mrimavatarsmall",qstrHost="obraz.foto.mail.ru",
           qstrRequest;
   QImage qiResult;
   if(flgBig)
      qstrRequest=qstrDelimeter+qstrDomain+qstrDelimeter+qstrLogin+qstrDelimeter+qstrBig;
   else
      qstrRequest=qstrDelimeter+qstrDomain+qstrDelimeter+qstrLogin+qstrDelimeter+qstrSmall;
      
   QTcpSocket Socket;
   QString qstrAvailableBytes;
   Socket.connectToHost(qstrHost,80,QIODevice::ReadWrite);
   if(!Socket.waitForConnected(CONNECTION_REFUSED_TIME))   
      return qiResult;
   char buf[200];
   strcpy(buf,QString("GET %1 HTTP/1.1\r\nHost: %2\r\n\r\n").arg(qstrRequest).arg(qstrHost).toAscii().constData());
   Socket.write(buf,strlen(buf));
   Socket.waitForBytesWritten();
   if(!Socket.waitForDisconnected(CONNECTION_REFUSED_TIME))
      return qiResult;
   QRegExp regexp("(Content-Length: )([0-9]+)");
   int Num=0;
   bool flgOk;
   QByteArray qbaBlock;
   qbaBlock=Socket.read(Socket.bytesAvailable());   
   qstrAvailableBytes=qbaBlock;   
   if(regexp.indexIn(qbaBlock)>-1)
   {
      Num=regexp.cap(2).toInt(&flgOk);
      if(!flgOk)
          return qiResult;
      qbaBlock=qbaBlock.right(Num);
      qiResult=QImage::fromData(qbaBlock);
   }   
   return qiResult;
}