Nhan Thuan Nguyen created HTTPCORE-438:
------------------------------------------
Summary: Got a java.nio.charset.UnsupportedCharsetException error
while the header value consist a charset binary
Key: HTTPCORE-438
URL: https://issues.apache.org/jira/browse/HTTPCORE-438
Project: HttpComponents HttpCore
Issue Type: Bug
Components: HttpCore
Affects Versions: 4.4.5
Reporter: Nhan Thuan Nguyen
Got a java.nio.charset.UnsupportedCharsetException error while the header value
consist a charset binary (see below). Since the method in
org.apache.http.entity.ContentType.get() is hard coded boolean value true for
strict param, the method in org.apache.http.entity.ContentType.create() throw
the UnsupportedCharsetException.
Can strict param be pass in from a system property,
-Dorg.apache.http.entity.contenttype.strict=false? If not set, then set it to
true as default.
Content-Type: image/jpeg; charset=binary; name="image_42Colk06m1oO0xfC"
Caused by: java.nio.charset.UnsupportedCharsetException: binary
at java.nio.charset.Charset.forName(Charset.java:531)
at org.apache.http.entity.ContentType.create(ContentType.java:224)
at org.apache.http.entity.ContentType.create(ContentType.java:214)
at org.apache.http.entity.ContentType.get(ContentType.java:299)
at org.apache.http.entity.ContentType.getOrDefault(ContentType.java:346)
at
org.apache.http.nio.protocol.AbstractAsyncResponseConsumer.responseReceived(AbstractAsyncResponseConsumer.java:130)
at
org.apache.http.impl.nio.client.MainClientExec.responseReceived(MainClientExec.java:315)
at
org.apache.http.impl.nio.client.DefaultClientExchangeHandlerImpl.responseReceived(DefaultClientExchangeHandlerImpl.java:147)
at
org.apache.http.nio.protocol.HttpAsyncRequestExecutor.responseReceived(HttpAsyncRequestExecutor.java:303)
at
org.apache.http.impl.nio.client.InternalRequestExecutor.responseReceived(InternalRequestExecutor.java:108)
at
org.apache.http.impl.nio.DefaultNHttpClientConnection.consumeInput(DefaultNHttpClientConnection.java:255)
at
org.apache.http.impl.nio.client.InternalIODispatch.onInputReady(InternalIODispatch.java:81)
at
org.apache.http.impl.nio.client.InternalIODispatch.onInputReady(InternalIODispatch.java:39)
at
org.apache.http.impl.nio.reactor.AbstractIODispatch.inputReady(AbstractIODispatch.java:121)
at
org.apache.http.impl.nio.reactor.BaseIOReactor.readable(BaseIOReactor.java:162)
at
org.apache.http.impl.nio.reactor.AbstractIOReactor.processEvent(AbstractIOReactor.java:337)
at
org.apache.http.impl.nio.reactor.AbstractIOReactor.processEvents(AbstractIOReactor.java:315)
at
org.apache.http.impl.nio.reactor.AbstractIOReactor.execute(AbstractIOReactor.java:276)
at
org.apache.http.impl.nio.reactor.BaseIOReactor.execute(BaseIOReactor.java:104)
at
org.apache.http.impl.nio.reactor.AbstractMultiworkerIOReactor$Worker.run(AbstractMultiworkerIOReactor.java:588)
public static ContentType get(
final HttpEntity entity) throws ParseException,
UnsupportedCharsetException {
if (entity == null) {
return null;
}
final Header header = entity.getContentType();
if (header != null) {
final HeaderElement[] elements = header.getElements();
if (elements.length > 0) {
return create(elements[0], true);
}
}
return null;
}
private static ContentType create(final String mimeType, final NameValuePair[]
params, final boolean strict) {
Charset charset = null;
for (final NameValuePair param: params) {
if (param.getName().equalsIgnoreCase("charset")) {
final String s = param.getValue();
if (!TextUtils.isBlank(s)) {
try {
charset = Charset.forName(s);
} catch (final UnsupportedCharsetException ex) {
if (strict) {
throw ex;
}
}
}
break;
}
}
return new ContentType(mimeType, charset, params != null &&
params.length > 0 ? params : null);
}
--
This message was sent by Atlassian JIRA
(v6.3.4#6332)
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]