⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 http.h

📁 khtml在gtk上的移植版本
💻 H
字号:
/* * Copyright (c) 2004 Nokia. All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * * Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the * distribution. * * Neither the name of Nokia nor the names of its contributors may be * used to endorse or promote products derived from this software * without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE * COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED * OF THE POSSIBILITY OF SUCH DAMAGE. */#ifndef KWIQHttp_h#define KWIQHttp_h#include "osb.h" //OSB::URLCredentialStorage// authentication required status code.#define HTTP_AUTH_REQUIRED 401class HttpRequest;class HttpRequestListener;class HttpHeader;class HttpRequestListener{ public:  virtual ~HttpRequestListener() {};  virtual bool started(const HttpRequest*) { return false;}  virtual bool finished(const HttpRequest*) { return false;}  virtual bool header(const HttpRequest*, const HttpHeader *header) { return false;}  virtual bool data(const HttpRequest*, const char* data, int len) { return false;}  virtual bool error(const HttpRequest* ) {return false;}  virtual bool headersEnd(const HttpRequest*) { return false;}    virtual bool resolving(const HttpRequest*) { return false;}  virtual bool authenticate(HttpRequest*) { return false;}};class HttpRequest{ public:  enum Type{ GET, POST };  enum State {CREATED, RUNNING, ERROR, FINISHED};    HttpRequest(const gchar* aurl, Type atype);      virtual ~HttpRequest();  Type type() { return m_type; }    /** converts params */  void setType(Type type);     virtual void setPostData(const gchar* contentType, GByteArray *);    void setReferrer(const gchar* str) { m_referrer = g_strdup(str);}  const gchar* referrer() const { return m_referrer; }  void setUserAgent(const gchar* str) { m_agent = g_strdup(str); }  const gchar* userAgent() const { return m_agent; }  void setForceReload(bool force) { m_reload = force;}  bool forceReload() const {return m_reload;}    /* start the request */  virtual void execute() = 0;    /** */  virtual void stop() = 0;  void setListener(HttpRequestListener* alistener) { listener = alistener;}  virtual void started();   virtual void finished();  virtual void error();  State state() const { return m_state; }  const gchar* authRealm() const { return m_authRealm; }  const gchar* authScheme() const { return m_authScheme; }  bool authIsProxy() const { return m_authIsProxy; }  virtual void authenticate(const gchar* user, const gchar* pass) = 0;    const gchar * url() { return m_url; } protected:  /** Resets the request. */  virtual void reset();   HttpRequestListener* listener;  gchar* m_url;  gchar* m_authRealm;  gchar*m_authScheme;  bool m_authIsProxy;   private:    // preferences  gchar* m_agent;  gchar*  m_referrer;  bool m_reload;  Type m_type;  State m_state;        };class HttpFactoryS{ public:  HttpFactoryS() {};  virtual ~HttpFactoryS() {};  virtual bool canProvide(const gchar* url) const = 0;  virtual HttpRequest* createRequest(HttpRequestListener* listener,                                     OSB::URLCredentialStorage* credentials,				     const gchar* url,				     HttpRequest::Type type = HttpRequest::GET) = 0;    virtual void setProxy(const gchar* proto, const gchar* url) = 0;    HttpRequestListener* dummyListener();  };HttpFactoryS& HttpFactory();class HttpHeader{ public:  enum Type {    Location,    ContentType,    ContentLength,    Refresh,    Unknown,    Invalid  };     public:  HttpHeader(Type atype, const gchar* key, const gchar* aval)    :m_type(atype), m_key(g_strdup(key)), m_value(g_strdup(aval)) {}    virtual ~HttpHeader() {g_free(m_key);g_free(m_value); }  virtual Type type() const { return m_type; }  virtual const gchar*  key() const { return m_key;}  virtual const gchar*  value() const {return m_value;} private:  Type m_type;  gchar* m_key;  gchar* m_value;  };class HttpHeaderLocation : public HttpHeader{ public:  HttpHeaderLocation(const gchar* value);  ~HttpHeaderLocation() {}; private:  };class HttpHeaderContentType : public HttpHeader{ public:  HttpHeaderContentType(const gchar* value);  ~HttpHeaderContentType();      const gchar* contentType() const { return m_contentType;}  const gchar* encoding() const { return m_encoding; } private:  gchar* m_contentType;  gchar* m_encoding;};class HttpHeaderContentLength : public HttpHeader{ public:  HttpHeaderContentLength(const gchar* value);  ~HttpHeaderContentLength() {}      const gint contentLength() const { return m_length;} private:  gint m_length;};class HttpHeaderRefresh :  public HttpHeader{ public:  HttpHeaderRefresh(const gchar* value);  ~HttpHeaderRefresh() {};   };#endif

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -