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 int request(const char* data, OutputStream& response);
00107
00113 bool checkToAbort();
00114
00120 void cancelRequest();
00121
00127 void notifyForNewBodyData();
00128
00129
00130 private:
00131
00132 RHTTPSession iHttpSession;
00133 RHTTPTransaction iHttpTransaction;
00134 TBool iTransFailed;
00135 CActiveSchedulerWait* iASWait;
00136
00138 HttpDataSupplier* iDataSupplier;
00139
00141 OutputStream* iOutputStream;
00142
00144 TInt iLastHTTPStatus;
00145
00146
00154 void OpenL();
00155
00161 void reuseActiveConnection();
00162
00168 void setRequestHeaders();
00169
00176 void readResponseHeaders();
00177
00186 void setHeader(RHTTPHeaders& aHeaders, const StringBuffer& property, const StringBuffer& value);
00187
00195 void SetBasicAuthorizationL(RHTTPHeaders& aHeaders, const StringBuffer& credentials);
00196
00204 void SetDefaultHeaderL(RHTTPHeaders& aHeaders, const TInt fieldID, const StringBuffer& value);
00205
00213 void SetCustomHeaderL(RHTTPHeaders& aHeaders, const StringBuffer& property, const StringBuffer& value);
00214
00215
00217 void printError(const TInt status);
00218
00220 void printHeaders(StringMap& headersMap);
00221
00222
00223
00224
00225
00231 void MHFRunL( RHTTPTransaction aTransaction, const THTTPEvent& aEvent );
00232
00242 TInt MHFRunError( TInt aError,
00243 RHTTPTransaction aTransaction,
00244 const THTTPEvent& aEvent );
00245
00246 };
00247
00248
00249 END_FUNAMBOL_NAMESPACE
00250
00252 #endif
00253