00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026
00027
00028
00029
00030
00031
00032
00033
00034
00035
00036 #ifndef INCL_HTTP_CONNECTION
00037 #define INCL_HTTP_CONNECTION
00038
00040 #include <coecntrl.h>
00041 #include <http/mhttptransactioncallback.h>
00042 #include <http/rhttpsession.h>
00043 #include <http/rhttpheaders.h>
00044
00045 #include "base/globalsdef.h"
00046 #include "http/URL.h"
00047 #include "http/Proxy.h"
00048 #include "http/AbstractHttpConnection.h"
00049 #include "http/HttpDataSupplier.h"
00050
00051 BEGIN_FUNAMBOL_NAMESPACE
00052
00053
00069 class HttpConnection : public AbstractHttpConnection,
00070 public CBase,
00071 public MHTTPTransactionCallback {
00072
00073 public:
00074
00075 HttpConnection(const char* ua);
00076
00077 virtual ~HttpConnection();
00078
00079
00086 virtual int open(const URL& url, RequestMethod method = MethodPost);
00087
00094 virtual int close();
00095
00105 virtual int request(InputStream& data, OutputStream& response);
00106
00112 bool checkToAbort();
00113
00119 void cancelRequest();
00120
00126 void notifyForNewBodyData();
00127
00128
00129 private:
00130
00131 RHTTPSession iHttpSession;
00132 RHTTPTransaction iHttpTransaction;
00133 TBool iTransFailed;
00134 CActiveSchedulerWait* iASWait;
00135
00137 HttpDataSupplier* iDataSupplier;
00138
00140 OutputStream* iOutputStream;
00141
00143 TInt iLastHTTPStatus;
00144
00145
00153 void OpenL();
00154
00160 void reuseActiveConnection();
00161
00167 void setRequestHeaders();
00168
00175 void readResponseHeaders();
00176
00185 void setHeader(RHTTPHeaders& aHeaders, const StringBuffer& property, const StringBuffer& value);
00186
00194 void SetBasicAuthorizationL(RHTTPHeaders& aHeaders, const StringBuffer& credentials);
00195
00203 void SetDefaultHeaderL(RHTTPHeaders& aHeaders, const TInt fieldID, const StringBuffer& value);
00204
00212 void SetCustomHeaderL(RHTTPHeaders& aHeaders, const StringBuffer& property, const StringBuffer& value);
00213
00214
00216 void printError(const TInt status);
00217
00219 void printHeaders(StringMap& headersMap);
00220
00221
00222
00223
00224
00230 void MHFRunL( RHTTPTransaction aTransaction, const THTTPEvent& aEvent );
00231
00241 TInt MHFRunError( TInt aError,
00242 RHTTPTransaction aTransaction,
00243 const THTTPEvent& aEvent );
00244
00245 };
00246
00247
00248 END_FUNAMBOL_NAMESPACE
00249
00251 #endif
00252