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

📄 httpget.h

📁 nsis是一个流传比较广的程序安装和解安装封装软件
💻 H
字号:
/*** JNetLib** Copyright (C) 2000-2001 Nullsoft, Inc.** Author: Justin Frankel** File: httpget.h - JNL interface for doing HTTP GETs.** License: see jnetlib.h**** Usage:**   1. Create a JNL_HTTPGet object, optionally specifying a JNL_AsyncDNS**      object to use (or NULL for none, or JNL_CONNECTION_AUTODNS for auto),**      and the receive buffer size, and a string specifying proxy (or NULL **      for none). See note on proxy string below.**   2. call addheader() to add whatever headers you want. It is recommended to**      add at least the following two:**        addheader("User-Agent:MyApp (Mozilla)");*///      addheader("Accept:*/*");/*         ( the comment weirdness is there so I Can do the star-slash :)**   3. Call connect() with the URL you wish to GET (see URL string note below)**   4. Call run() once in a while, checking to see if it returns -1 **      (if it does return -1, call geterrorstr() to see what the error is).**      (if it returns 1, no big deal, the connection has closed).**   5. While you're at it, you can call bytes_available() to see if any data**      from the http stream is available, or getheader() to see if any headers**      are available, or getreply() to see the HTTP reply, or getallheaders() **      to get a double null terminated, null delimited list of headers returned.**   6. If you want to read from the stream, call get_bytes (which returns how much**      was actually read).**   7. content_length() is a helper function that uses getheader() to check the**      content-length header.**   8. Delete ye' ol' object when done.**** Proxy String:**   should be in the format of host:port, or user@host:port, or **   user:password@host:port. if port is not specified, 80 is assumed.** URL String:**   should be in the format of http://user:pass@host:port/requestwhatever**   note that user, pass, port, and /requestwhatever are all optional :)**   note that also, http:// is really not important. if you do poo://**   or even leave out the http:// altogether, it will still work.*/#ifndef _HTTPGET_H_#define _HTTPGET_H_#include "connection.h"#include "util.h"class JNL_HTTPGet{  public:    JNL_HTTPGet(JNL_AsyncDNS *dns=JNL_CONNECTION_AUTODNS, int recvbufsize=16384, char *proxy=NULL);    ~JNL_HTTPGet();    void addheader(char *header);    void connect(char *url);    int run(); // returns: 0 if all is OK. -1 if error (call geterrorstr()). 1 if connection closed.    int   get_status(); // returns 0 if connecting, 1 if reading headers,                         // 2 if reading content, -1 if error.    char *getallheaders(); // double null terminated, null delimited list    char *getheader(char *headername);    char *getreply() { return m_reply; }    int   getreplycode(); // returns 0 if none yet, otherwise returns http reply code.    char *geterrorstr() { return m_errstr;}    int bytes_available();    int get_bytes(char *buf, int len);    int peek_bytes(char *buf, int len);    int content_length() { char *p=getheader("content-length:"); if (p) return my_atoi(p); return 0; }    JNL_Connection *get_con() { return m_con; }  public:    void reinit();    void deinit();    void seterrstr(char *str) { if (m_errstr) free(m_errstr); m_errstr=(char*)malloc(strlen(str)+1); strcpy(m_errstr,str); }    void do_parse_url(char *url, char **host, int *port, char **req, char **lp);    void do_encode_mimestr(char *in, char *out);    JNL_AsyncDNS *m_dns;    JNL_Connection *m_con;    int m_recvbufsize;    int m_http_state;    int m_http_port;    char *m_http_url;    char *m_http_host;    char *m_http_lpinfo;    char *m_http_request;    char *m_http_proxylpinfo;    char *m_http_proxyhost;    int   m_http_proxyport;    char *m_sendheaders;    char *m_recvheaders;    int m_recvheaders_size;    char *m_reply;    char *m_errstr;};#endif // _HTTPGET_H_

⌨️ 快捷键说明

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