Example #1
0
ECode DefaultHttpClient::CreateHttpProcessor(
    /* [out] */ IBasicHttpProcessor** processor)
{
    VALIDATE_NOT_NULL(processor)
    AutoPtr<IBasicHttpProcessor> httpproc;
    CBasicHttpProcessor::New((IBasicHttpProcessor**)&httpproc);
    AutoPtr<IHttpRequestInterceptor> interceptor1;
    CRequestDefaultHeaders::New((IHttpRequestInterceptor**)&interceptor1);
    httpproc->AddInterceptor(interceptor1);

    // Required protocol interceptors
    AutoPtr<IHttpRequestInterceptor> interceptor2;
    CRequestContent::New((IHttpRequestInterceptor**)&interceptor2);
    httpproc->AddInterceptor(interceptor2);

    AutoPtr<IHttpRequestInterceptor> interceptor3;
    CRequestTargetHost::New((IHttpRequestInterceptor**)&interceptor3);
    httpproc->AddInterceptor(interceptor3);

    // Recommended protocol interceptors
    AutoPtr<IHttpRequestInterceptor> interceptor4;
    CRequestConnControl::New((IHttpRequestInterceptor**)&interceptor4);
    httpproc->AddInterceptor(interceptor4);

    AutoPtr<IHttpRequestInterceptor> interceptor5;
    CRequestUserAgent::New((IHttpRequestInterceptor**)&interceptor5);
    httpproc->AddInterceptor(interceptor5);

    AutoPtr<IHttpRequestInterceptor> interceptor6;
    CRequestExpectContinue::New((IHttpRequestInterceptor**)&interceptor6);
    httpproc->AddInterceptor(interceptor6);

    // HTTP state management interceptors
    AutoPtr<IHttpRequestInterceptor> interceptor7;
    CRequestAddCookies::New((IHttpRequestInterceptor**)&interceptor7);
    httpproc->AddInterceptor(interceptor7);

    AutoPtr<IHttpResponseInterceptor> interceptor8;
    CResponseProcessCookies::New((IHttpResponseInterceptor**)&interceptor8);
    httpproc->AddInterceptor(interceptor8);

    // HTTP authentication interceptors
    AutoPtr<IHttpRequestInterceptor> interceptor9;
    CRequestTargetAuthentication::New((IHttpRequestInterceptor**)&interceptor9);
    httpproc->AddInterceptor(interceptor9);

    AutoPtr<IHttpRequestInterceptor> interceptor10;
    CRequestProxyAuthentication::New((IHttpRequestInterceptor**)&interceptor10);
    httpproc->AddInterceptor(interceptor10);

    *processor = httpproc;
    REFCOUNT_ADD(*processor)
    return NOERROR;
}