diff --git a/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/keyimport/HkpKeyserverClient.java b/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/keyimport/HkpKeyserverClient.java index 7100a91f3..5adee8c4b 100644 --- a/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/keyimport/HkpKeyserverClient.java +++ b/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/keyimport/HkpKeyserverClient.java @@ -19,6 +19,9 @@ package org.sufficientlysecure.keychain.keyimport; import android.support.annotation.NonNull; + +import okhttp3.MediaType; +import okhttp3.ResponseBody; import org.sufficientlysecure.keychain.network.OkHttpClientFactory; import org.sufficientlysecure.keychain.pgp.PgpHelper; import org.sufficientlysecure.keychain.ui.util.KeyFormattingUtils; @@ -417,11 +420,19 @@ public class HkpKeyserverClient implements KeyserverClient { private String getResponseBodyAsUtf8(Response response) throws IOException { String responseBody; - byte[] responseBytes = response.body().bytes(); + ResponseBody body = response.body(); + if (body == null) { + throw new IOException("Response from keyserver was empty"); + } try { - responseBody = new String(responseBytes, response.body().contentType().charset(UTF_8)); + MediaType mediaType = body.contentType(); + Charset charset = mediaType != null ? mediaType.charset(UTF_8) : UTF_8; + if (charset == null) { + charset = UTF_8; + } + responseBody = new String(body.bytes(), charset); } catch (UnsupportedCharsetException e) { - responseBody = new String(responseBytes, UTF_8); + responseBody = new String(body.bytes(), UTF_8); } return responseBody;