diff -r 000000000000 -r b16258d2340f applayerprotocols/httpexamples/httpexampleclient/httpexampleclient.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/applayerprotocols/httpexamples/httpexampleclient/httpexampleclient.h Tue Feb 02 01:09:52 2010 +0200 @@ -0,0 +1,155 @@ +// Copyright (c) 2001-2009 Nokia Corporation and/or its subsidiary(-ies). +// All rights reserved. +// This component and the accompanying materials are made available +// under the terms of "Eclipse Public License v1.0" +// which accompanies this distribution, and is available +// at the URL "http://www.eclipse.org/legal/epl-v10.html". +// +// Initial Contributors: +// Nokia Corporation - initial contribution. +// +// Contributors: +// +// Description: +// HTTPEXAMPLECLIENT is a simple text based http client. +// It is intended as an example and introduction to the HTTP Client API's available in +// The Symbian Platform Release 6.2 +// Users should have a brief understanding of HTTP and the different types of requests and responses you can get +// from servers. They should also be familiar with setting up a communications database (cdbv2.dat) with suitable settings +// for modems/NTRas and ISP's. +// +// + +#include +#include +#include + +// Maximum size of buffer to hold content-type data +// +const TInt KMaxContentTypeSize = 64; + + +// +// Definition of CHttpClient +// +class CHttpEventHandler; +class CHttpExampleUtils; + + +/** The example http client. Intended as a simple example of an http client. It is a simple text console app that allows + basic http methods to be tested. It allows data for the post method to be supplied via a file or built up dynamically. + It also allows responses to be saved to a file + + It is derived from MHTTPAuthenticationCallback to allow access to servers that require a user to submit a username and + password to access protected sections of that server. + +*/ +class CHttpClient : public CBase, public MHTTPDataSupplier, + public MHTTPAuthenticationCallback + { +public: + virtual ~CHttpClient(); + static CHttpClient* NewLC(); + static CHttpClient* NewL(); + void StartClientL(); +// methods inherited from MHTTPDataSupplier + virtual TBool GetNextDataPart(TPtrC8& aDataPart); + virtual void ReleaseData(); + virtual TInt OverallDataSize(); + virtual TInt Reset(); + +// methods inherited from MHTTPAuthenticationCallback + virtual TBool GetCredentialsL(const TUriC8& aURI, RString aRealm, + RStringF aAuthenticationType, + RString& aUsername, + RString& aPassword); + +protected: + CHttpClient(); + void ConstructL(); +private: + + enum TMenuItems + { + EGet, + EPost, + EHead, + ETrace, + EToggleVerbosity, + EQuit, + EProxy, + ESession, + EHook + }; + + void ResetTimeElapsed(); + void DisplayTimeElapsed(); + // + void InvokeHttpMethodL(const TDesC8& aUri, RStringF aMethod); + void SetHeaderL(RHTTPHeaders aHeaders, TInt aHdrField, const TDesC8& aHdrValue); + void GetRequestBodyL(RStringF& aMethod); + void GetPostBodyManuallyL(); + void SetHookL(TDesC& aHook); + TBool ClearHook(TPtrC aHook = KNullDesC()); + void SetDefaults(TDes& aURL, TDes& aProxy, TDes& aHook, TDes& aSessionId); + +private: + TTime iLastTimeStamp; + TInt iDataChunkCount; + RHTTPSession iSess; + RHTTPTransaction iTrans; + TBool iHasARequestBody; + RFs iFileServ; + RFile iReqBodyFile; + TFileName iReqBodyFileName; + TParse iParsedFileName; + TBuf iReqBodyContentType; + CHttpEventHandler* iTransObs; + HBufC8* iReqBodySubmitBuffer; + TPtr8 iReqBodySubmitBufferPtr; + CHTTPFormEncoder* iFormEncoder; // used for manual post submissions + TBool iManualPost; + CHttpExampleUtils* iUtils; + TBool iNoMoreDate; + TFileName iHookFileName; + }; + + + +/** Handles all events for the active transaction. Just displays and logs events that occur. +*/ +class CHttpEventHandler : public CBase, public MHTTPTransactionCallback + { +public: + virtual ~CHttpEventHandler(); + static CHttpEventHandler* NewLC(CHttpExampleUtils& aUtils); + static CHttpEventHandler* NewL(CHttpExampleUtils& aUtils); + void SetVerbose(TBool aVerbose); + TBool Verbose() const; + void CheckCertificatesL(RHTTPTransaction& aTrans); + void SetSecuredHttp(TBool aSecuredHttp); + TBool SecuredHttp() const; + // + // methods from MHTTPTransactionCallback + // + virtual void MHFRunL(RHTTPTransaction aTransaction, const THTTPEvent& aEvent); + virtual TInt MHFRunError(TInt aError, RHTTPTransaction aTransaction, const THTTPEvent& aEvent); + +protected: + CHttpEventHandler(CHttpExampleUtils& aUtils); + void ConstructL(); +private: + void DumpRespHeadersL(RHTTPTransaction& aTrans); + void DumpRespBody(RHTTPTransaction& aTrans); + void DumpIt(const TDesC8& aData); + TBool iVerbose; + TBool iSavingResponseBody; + RFs iFileServ; + RFile iRespBodyFile; + TFileName iRespBodyFileName; + TParse iParsedFileName; + MHTTPDataSupplier* iRespBody; + CHttpExampleUtils& iUtils; // not owned + TBool iSecuredHttp; + }; +