http.h
来自「konqueror3 embedded版本, KDE环境下的当家浏览器的嵌入式版」· C头文件 代码 · 共 578 行 · 第 1/2 页
H
578 行
/* Copyright (C) 2000,2001 Dawit Alemayehu <adawit@kde.org> Copyright (C) 2000,2001 Waldo Bastian <bastian@kde.org> Copyright (C) 2000,2001 George Staikos <staikos@kde.org> Copyright (C) 2001,2002 Hamish Rodda <rodda@kde.org> This library is free software; you can redistribute it and/or modify it under the terms of the GNU Library General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Library General Public License for more details. You should have received a copy of the GNU Library General Public License along with this library; see the file COPYING.LIB. If not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.*/#ifndef HTTP_H_#define HTTP_H_#include <netinet/in.h>#include <arpa/inet.h>#include <string.h>#include <stdio.h>#include <time.h>#include <qptrlist.h>#include <qstrlist.h>#include <qstringlist.h>#include <kurl.h>#include "kio/tcpslavebase.h"#include "kio/http.h"class DCOPClient;class QDomElement;class QDomNodeList;namespace KIO { class AuthInfo;}class HTTPProtocol : public QObject, public KIO::TCPSlaveBase{ Q_OBJECTpublic: HTTPProtocol( const QCString &protocol, const QCString &pool, const QCString &app ); virtual ~HTTPProtocol(); /** HTTP version **/ enum HTTP_REV {HTTP_None, HTTP_Unknown, HTTP_10, HTTP_11, SHOUTCAST}; /** Authorization method used **/ enum HTTP_AUTH {AUTH_None, AUTH_Basic, AUTH_NTLM, AUTH_Digest, AUTH_Negotiate}; /** HTTP / DAV method **/ // Removed to interfaces/kio/http.h //enum HTTP_METHOD {HTTP_GET, HTTP_PUT, HTTP_POST, HTTP_HEAD, HTTP_DELETE, // HTTP_OPTIONS, DAV_PROPFIND, DAV_PROPPATCH, DAV_MKCOL, // DAV_COPY, DAV_MOVE, DAV_LOCK, DAV_UNLOCK, DAV_SEARCH }; /** State of the current Connection **/ struct HTTPState { HTTPState () { port = 0; doProxy = false; } QString hostname; QString encoded_hostname; short unsigned int port; QString user; QString passwd; bool doProxy; }; /** DAV-specific request elements for the current connection **/ struct DAVRequest { DAVRequest () { overwrite = false; depth = 0; } QString desturl; bool overwrite; int depth; }; /** The request for the current connection **/ struct HTTPRequest { HTTPRequest () { port = 0; method = KIO::HTTP_UNKNOWN; offset = 0; doProxy = false; allowCompressedPage = false; disablePassDlg = false; bNoAuth = false; bUseCache = false; bCachedRead = false; bCachedWrite = false; fcache = 0; bMustRevalidate = false; cacheExpireDateOffset = 0; bErrorPage = false; bUseCookiejar = false; expireDate = 0; creationDate = 0; } QString hostname; QString encoded_hostname; short unsigned int port; QString user; QString passwd; QString path; QString query; KIO::HTTP_METHOD method; KIO::CacheControl cache; KIO::filesize_t offset; bool doProxy; KURL url; QString window; // Window Id this request is related to. QString referrer; QString charsets; QString languages; bool allowCompressedPage; bool disablePassDlg; QString userAgent; QString id; DAVRequest davData; bool bNoAuth; // Do not authenticate // Cache related QString cef; // Cache Entry File belonging to this URL. bool bUseCache; // Whether the cache is active bool bCachedRead; // Whether the file is to be read from m_fcache. bool bCachedWrite; // Whether the file is to be written to m_fcache. FILE* fcache; // File stream of a cache entry QString etag; // ETag header. QString lastModified; // Last modified. bool bMustRevalidate; // Cache entry is expired. long cacheExpireDateOffset; // Position in the cache entry where the // 16 byte expire date is stored. time_t expireDate; // Date when the cache entry will expire time_t creationDate; // Date when the cache entry was created QString strCharset; // Charset // Indicates whether an error-page or error-msg should is preferred. bool bErrorPage; // Cookie flags bool bUseCookiejar; enum { CookiesAuto, CookiesManual, CookiesNone } cookieMode; }; struct DigestAuthInfo { QCString nc; QCString qop; QCString realm; QCString nonce; QCString method; QCString cnonce; QCString username; QCString password; QStrList digestURI; QCString algorithm; QCString entityBody; };//---------------------- Re-implemented methods ---------------- virtual void setHost(const QString& host, int port, const QString& user, const QString& pass); virtual void slave_status(); virtual void get( const KURL& url ); virtual void put( const KURL& url, int _mode, bool overwrite, bool _resume );//----------------- Re-implemented methods for WebDAV ----------- virtual void listDir( const KURL& url ); virtual void mkdir( const KURL& url, int _permissions ); virtual void rename( const KURL& src, const KURL& dest, bool overwrite ); virtual void copy( const KURL& src, const KURL& dest, int _permissions, bool overwrite ); virtual void del( const KURL& url, bool _isfile ); // ask the host whether it supports WebDAV & cache this info bool davHostOk(); // send generic DAV request void davGeneric( const KURL& url, KIO::HTTP_METHOD method ); // Send requests to lock and unlock resources void davLock( const KURL& url, const QString& scope, const QString& type, const QString& owner ); void davUnlock( const KURL& url ); // Calls httpClose() and finished() void davFinished(); // Handle error conditions QString davError( int code = -1, QString url = QString::null );//---------------------------- End WebDAV ----------------------- /** * Special commands supported by this slave : * 1 - HTTP POST * 2 - Cache has been updated * 3 - SSL Certificate Cache has been updated * 4 - HTTP multi get * 5 - DAV LOCK (see * 6 - DAV UNLOCK README.webdav) */ virtual void special( const QByteArray &data ); virtual void mimetype( const KURL& url); virtual void stat( const KURL& url ); virtual void reparseConfiguration(); virtual void closeConnection(); // Forced close of connection void post( const KURL& url ); void multiGet(const QByteArray &data); bool checkRequestURL( const KURL& ); void cacheUpdate( const KURL &url, bool nocache, time_t expireDate); void httpError(); // Generate error message based on response code bool isOffline(const KURL &url); // Check network statusprotected slots: void slotData(const QByteArray &); void error( int _errid, const QString &_text );protected: int readChunked(); // Read a chunk int readLimited(); // Read maximum m_iSize bytes. int readUnlimited(); // Read as much as possible. /** * A "smart" wrapper around write that will use SSL_write or * write(2) depending on whether you've got an SSL connection or not. * The only shortcomming is that it uses the "global" file handles and * soforth. So you can't really use this on individual files/sockets. */ ssize_t write(const void *buf, size_t nbytes); /** * Another "smart" wrapper, this time around read that will * use SSL_read or read(2) depending on whether you've got an * SSL connection or not. */ ssize_t read (void *b, size_t nbytes); char *gets (char *str, int size); void setRewindMarker(); void rewind(); /** * Add an encoding on to the appropriate stack this * is nececesary because transfer encodings and * content encodings must be handled separately. */ void addEncoding(QString, QStringList &); void configAuth( char *, bool ); bool httpOpen(); // Open transfer void httpClose(bool keepAlive); // Close transfer
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?