Hi Oleg, On Sun, Apr 22, 2012 at 5:45 PM, Oleg Kalnichevski <[email protected]> wrote:
> On Sun, 2012-04-22 at 16:09 +0530, Kishanthan Thangarajah wrote: > > Hi All, > > We are in the process of supporting httpclient4 in axis2 [1] along with > > httpclient3 implementation. Since most of the httpclient4 implementations > > are new from 3, we have some questions on proceeding with it. With > > httpcleint 3, we used RequestEntity class in creating a Request entity > > which will be used in wrapping the axis2 message object. Then this will > be > > used by axis2 http sender in every request. With httpclient4, in getting > > the same thing done, we are using HttpEntity. > > But with HttpEntity, we have to implement getContent() method in getting > > the request entity content. This method returns an InputStream. So what > we > > did was, return a ByteArrayInputStream of the message in the method impl. > > (ie *return new ByteArrayInputStream(message.getBytes()*). But is this > the > > best way of handling this, method considering performance.? > > We figured out this way by referring to some of the available impl of > this > > method, such as in ByteArrayEntity etc. > > > > Thanks, > > Kishanthan. > > > > [1] https://issues.apache.org/jira/browse/AXIS2-4318 > > Kishanthan > > The HttpEntity interface is used to represent content body of both > incoming and outgoing messages. As far as HTTP request messages on the > client side are concerned only #writeTo method is actually used when > writing the request content out to the underlying connection. One should > provide the #getContent method for the sake of completeness but the > implementation of this method will have no impact on performance of the > Axis2 HTTP transport. > > Hope this helps > Thanks for the reply. Yes, it does help. FYI this[1] is the current implementation, where the method getRequestEntityContent() is called in the getContent() method of our HttpEntity impl. I have some more questions. We used the following code segment in setting a default timeout for connection manager in httpclient3. *httpClient.getParams().setConnectionManagerTimeout(**connectionTimeoutValue **). *How can i do the same with httpclient4.? I have gone through the tutorial and found that we can set timeouts for httpclient or httpmethods by setting a parameter as *httpClient.getParams().setParameter(CoreConnectionPNames.CONNECTION_TIMEOUT, connectionTimeoutValue). *But does this set the timeout for connection manager as-well? In httpclient3, when setting proxy credentials we used *httpClient.getState().setProxyCredentials(AuthScope.ANY, proxyCredentials). *So to do the same in 4, if i call *httpClient.getCredentialsProvider().setCredentials(AuthScope.ANY, proxyCredentials), *will it be ok.?. Also can this way be used in setting other credentials (NTCredentials or UsernamePasswordCredentials) as-well ? Also i found that most of the parameters are set or get using the respective methods in 3. But the same can be done by calling only the setParameter and providing the correct constants such as CoreConnectionPNames, ClientPNames, etc. Thanks, Kishanthan. [1] http://svn.apache.org/viewvc/axis/axis2/java/core/branches/AXIS2-4318/modules/transport/http/src/org/apache/axis2/transport/http/AxisRequestEntity.java?revision=1327468&view=markup&pathrev=1327468 > > Oleg > > > --------------------------------------------------------------------- > To unsubscribe, e-mail: [email protected] > For additional commands, e-mail: [email protected] > >
