Re[8]: HTTP :unsupported content-encoding of '' found
"Sterpu Victor" <[email protected]>
| Newsgroups | gmane.text.xml.axis.user |
|---|---|
| Message-ID | <emc374f360-d62c-45f6-a03b-1438fd4ee89f@victor-pc> |
This heappens in isolated cases, in thye last 5 days I have 14 such
errors out of 900 SOAP calls.
This is not a Axis2 problem, http client 3 has the problem and is
somehow triggered by this weird header and content received from the
server.
I mean all the majority of the response headers that came from the
server do not contain a content-encoding and I don't receive this error.
The error appears only when server replies with my original content and
when the server includes a lot of unnecessary header fields.
Anyway I think the simpliest solution is to recompile the
axis2-transport-http-1.7.3.jar and change the lines where the exception
is throwed(simply set contentEncoding = identity when contentEncoding
='').
protected void processResponse(HttpResponse response, MessageContext
msgContext)
throws IOException {
obtainHTTPHeaderInformation(response, msgContext);
HttpEntity httpEntity = response.getEntity();
InputStream in = httpEntity.getContent();
if (in == null) {
throw new AxisFault(Messages.getMessage("canNotBeNull",
"InputStream"));
}
Header contentEncoding = httpEntity.getContentEncoding();
if (contentEncoding != null) {
if
(contentEncoding.getValue().equalsIgnoreCase(HTTPConstants.COMPRESSION_GZIP))
{
in = new GZIPInputStream(in);
// If the content-encoding is identity we can basically
ignore
// it.
} else if
(!"identity".equalsIgnoreCase(contentEncoding.getValue())) {
throw new AxisFault("HTTP :" + "unsupported
content-encoding of '"
+ contentEncoding.getValue() + "'
found");
}
}
OperationContext opContext = msgContext.getOperationContext();
if (opContext != null) {
opContext.setProperty(MessageContext.TRANSPORT_IN, in);
}
}
------ Original Message ------
From: "Andreas Veithen" <[email protected]>
To: "Sterpu Victor" <[email protected]>
Cc: "java-user" <[email protected]>
Sent: 24/11/2016 11:39:32 PM
Subject: Re: Re[6]: HTTP :unsupported content-encoding of '' found
>On Thu, Nov 24, 2016 at 8:43 PM, Sterpu Victor <[email protected]> wrote:
>> I followed the answers from the server fo a few days and found that
>> sometimes the server sends no Content-Encoding and I still get this
>>error -
>> "HTTP :unsupported content-encoding of ''".
>
>I doubt that. If that was the case, then Axis2 would fail in the vast
>majority of standard use cases.
>
>> Down there is a header received from the server with this error and
>>without
>> Content-Encoding. Why is Axis assuming an empty Content-Encoding when
>>the
>> headers contain no Content-Encoding?
>> The answer contains a Authorization field that should not be present
>>in the
>> server response.
>> I don't know why but everytime when I receive "unsupported
>>content-encoding"
>> the response header contains a Authorization field, a OSCP_RESPONSE
>>and a
>> lot of other fields that are not in a usual SOAP response.
>>
>> HTTP/1.1 200 OK
>> X-Backside-Transport: OK OK
>> Connection: Keep-Alive
>> Date: Sun, 20 Nov 2016 13:23:53 GMT
>> X-Powered-By: Servlet/3.0
>> SOAPAction:
>> "core.des.uti.ro/StoreClinicalDocument/storeClinicalDocumentSRequest"
>> $WSPR: HTTP/1.1
>> User-Agent: Axis2
>> x509:
>>
>>***************************************************************************************************
>> Host: ws.des-cnas.ro
>> _WS_HAPRT_WLMVERSION: -1
>> $WSIS: false
>> Surrogate-Capability: WS-ESI="ESI/1.0+"
>> Via: 1.1 BwAAAKxf0QA-
>> $WSRA: 172.30.8.82
>> OSCP_RESPONSE:
>>
>>*****************************************************************************************
>> $WSSC: http
>> X-Client-IP: 89.43.152.14,89.43.152.14
>> serial: *********************************************************
>> $WSRH: 172.30.8.82
>> Expect: 100-Continue
>> Authorization: Basic
>> ************************************************************
>> issuer: C=RO, O=certSIGN, OU=certSIGN Qualified CA Class 3 G2,
>>CN=certSIGN
>> Qualified CA Class 3 G2
>> $WSSN: ***********
>> $WSSP: 80
>> Content-Type: text/xml
>> Content-Language: en-US
>> X-Archived-Client-IP: *******************
>> Content-Length: 14813
>>
>> ------ Original Message ------
>> From: "Andreas Veithen" <[email protected]>
>> To: "Sterpu Victor" <[email protected]>
>> Cc: "java-user" <[email protected]>
>> Sent: 19/11/2016 7:58:50 PM
>> Subject: Re: Re[4]: HTTP :unsupported content-encoding of '' found
>>
>>> You could submit a patch to Axis2 to ignore empty Content-Encoding
>>> headers.
>>>
>>> Andreas
>>>
>>> On Sat, Nov 19, 2016 at 5:15 PM, Sterpu Victor <[email protected]>
>>>wrote:
>>>>
>>>> I don't control the server, so I need a client side solution.
>>>> Could I set a default content encoding if the server is not
>>>>sending one?
>>>>
>>>> Thank you.
>>>>
>>>> ------ Original Message ------
>>>> From: "Andreas Veithen" <[email protected]>
>>>> To: "Sterpu Victor" <[email protected]>
>>>> Cc: "java-user" <[email protected]>
>>>> Sent: 19/11/2016 7:04:16 PM
>>>> Subject: Re: Re[2]: HTTP :unsupported content-encoding of '' found
>>>>
>>>>
>>>> According to the HTTP/1.1 specification the Content-Encoding
>>>>header must
>>>> have the following form:
>>>>
>>>> Content-Encoding = "Content-Encoding" ":" 1#content-coding
>>>>
>>>> I.e. an empty value is not allowed, so this is a server side
>>>>problem.
>>>>
>>>> Andreas
>>>>
>>>>
>>>> On Nov 19, 2016 4:30 PM, "Sterpu Victor" <[email protected]> wrote:
>>>>>
>>>>>
>>>>> Yes, I traced everything with fiddler.
>>>>> I can now see that "Content-Encoding: " is not defined. If this
>>>>>is the
>>>>> reason can I safely ignore this error?
>>>>> This is the raw header:
>>>>>
>>>>> HTTP/1.1 200 OK
>>>>> X-Backside-Transport: OK OK
>>>>> Connection: Keep-Alive
>>>>> Transfer-Encoding: chunked
>>>>> Date: Sat, 19 Nov 2016 16:08:44 GMT
>>>>> X-Powered-By: Servlet/3.0
>>>>> SOAPAction:
>>>>>
>>>>>"core.des.uti.ro/StoreClinicalDocument/storeClinicalDocumentSRequest"
>>>>> $WSPR: HTTP/1.1
>>>>> User-Agent: Axis2
>>>>> x509: ********************
>>>>> Host: ws.des-cnas.ro
>>>>> _WS_HAPRT_WLMVERSION: -1
>>>>> $WSIS: false
>>>>> Surrogate-Capability: WS-ESI="ESI/1.0+"
>>>>> Via: 1.1 AQAAAEZVhAE-
>>>>> $WSRA: 172.30.8.81
>>>>> OSCP_RESPONSE: *****************
>>>>> $WSSC: http
>>>>> X-Client-IP: ****
>>>>> serial: ******************
>>>>> $WSRH: 172.30.8.81
>>>>> Expect: 100-Continue
>>>>> Authorization: Basic ***************************************
>>>>> issuer: C=RO, O=certSIGN, OU=certSIGN Qualified CA Class 3 G2,
>>>>> CN=certSIGN
>>>>> Qualified CA Class 3 G2
>>>>> $WSSN: ws.des-cnas.ro
>>>>> $WSSP: 80
>>>>> Content-Type: text/xml
>>>>> Content-Encoding:
>>>>> Content-Language: en-US
>>>>> X-Archived-Client-IP: ****
>>>>>
>>>>>
>>>>> ------ Original Message ------
>>>>> From: "Andreas Veithen" <[email protected]>
>>>>> To: "Sterpu Victor" <[email protected]>; "java-user"
>>>>> <[email protected]>
>>>>> Sent: 19/11/2016 6:04:04 PM
>>>>> Subject: Re: HTTP :unsupported content-encoding of '' found
>>>>>
>>>>>
>>>>> Can you show us the HTTP headers of the response?
>>>>>
>>>>> Andreas
>>>>>
>>>>>
>>>>> On Nov 19, 2016 3:45 PM, "Sterpu Victor" <[email protected]> wrote:
>>>>>>
>>>>>>
>>>>>> I' receiving the error: Caused by: org.apache.axis2.AxisFault:
>>>>>>HTTP
>>>>>> :unsupported content-encoding of '' found
>>>>>> The SOAP call runs fine on the server, but on the client side
>>>>>>this
>>>>>> error
>>>>>> appears.
>>>>>> How can I fix this? I could catch this exception and consider
>>>>>>that the
>>>>>> call is fine, but can I fix it in another way?
>>>>>>
>>>>>> This is the whole stack trace:
>>>>>> Caused by: org.apache.axis2.AxisFault: HTTP :unsupported
>>>>>> content-encoding
>>>>>> of '' found
>>>>>> at
>>>>>>
>>>>>>
>>>>>>org.apache.axis2.transport.http.impl.httpclient3.HTTPSenderImpl.processResponse(HTTPSenderImpl.java:476)
>>>>>> at
>>>>>>
>>>>>>
>>>>>>org.apache.axis2.transport.http.impl.httpclient3.HTTPSenderImpl.handleResponse(HTTPSenderImpl.java:311)
>>>>>> at
>>>>>>
>>>>>>
>>>>>>org.apache.axis2.transport.http.impl.httpclient3.HTTPSenderImpl.sendViaPost(HTTPSenderImpl.java:213)
>>>>>> at
>>>>>>
>>>>>>org.apache.axis2.transport.http.HTTPSender.send(HTTPSender.java:121)
>>>>>> at
>>>>>>
>>>>>>
>>>>>>org.apache.axis2.transport.http.CommonsHTTPTransportSender.writeMessageWithCommons(CommonsHTTPTransportSender.java:403)
>>>>>> at
>>>>>>
>>>>>>
>>>>>>org.apache.axis2.transport.http.CommonsHTTPTransportSender.invoke(CommonsHTTPTransportSender.java:234)
>>>>>> at org.apache.axis2.engine.AxisEngine.send(AxisEngine.java:431)
>>>>>> at
>>>>>>
>>>>>>
>>>>>>org.apache.axis2.description.OutInAxisOperationClient.send(OutInAxisOperation.java:399)
>>>>>> at
>>>>>>
>>>>>>
>>>>>>org.apache.axis2.description.OutInAxisOperationClient.executeImpl(OutInAxisOperation.java:225)
>>>>>> at
>>>>>>
>>>>>>
>>>>>>org.apache.axis2.client.OperationClient.execute(OperationClient.java:150)
>>>>>> at
>>>>>>
>>>>>>
>>>>>>stubs.StoreClinicalDocument.client.StoreClinicalDocumentStub.storeClinicalDocumentS(StoreClinicalDocumentStub.java:377)
>>>>>>
>>>>>> In StoreClinicalDocumentStub.java, at the line 377 I have:
>>>>>> "_operationClient.execute(true);"
>>>>>>
>>>>>> Thank you.
>>>>>>
>>>>>>
>>