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; }