2016-08-12 76 views
0

我试图让一个swagger-codgen生成的泽西API库与https(SSL)一起飞行。适用于MIME媒体类型text/html的阅读器; charset =未找到UTF-8

这是工作的罚款,只有HTTP这样的:

public ApiClient rebuildHttpClient() { 
    // Add the JSON serialization support to Jersey 
    JacksonJsonProvider jsonProvider = new JacksonJsonProvider(objectMapper); 
    DefaultClientConfig conf = new DefaultClientConfig(); 
    conf.getSingletons().add(jsonProvider); 
    Client client = Client.create(conf); 
    if (debugging) { 
     client.addFilter(new LoggingFilter()); 
    } 
    this.httpClient = client; 
    return this; 
    } 

但后来我试图建立SSL这样

public ApiClient rebuildHttpClient() { 
    // Add the JSON serialization support to Jersey 
    JacksonJsonProvider jsonProvider = new JacksonJsonProvider(objectMapper); 

    TrustManager[] byPassTrustManagers = new TrustManager[] { new X509TrustManager() { 

     public X509Certificate[] getAcceptedIssuers() { 
     return new X509Certificate[0]; 
     } 

     public void checkClientTrusted(X509Certificate[] chain, String authType) { } 

     public void checkServerTrusted(X509Certificate[] chain, String authType) { } 

    } }; 


    HostnameVerifier hostnameVerifier = HttpsURLConnection.getDefaultHostnameVerifier(); 

    ClientConfig config = new DefaultClientConfig(); 

    SSLContext ctx = null; 
    try { 
     ctx = SSLContext.getInstance("SSL"); 
    } catch (NoSuchAlgorithmException e) { 
     e.printStackTrace(); 
    } 
    try { 
     ctx.init(null, byPassTrustManagers, null); 
    } catch (KeyManagementException e) { 
     e.printStackTrace(); 
    } 
    config.getProperties().put(HTTPSProperties.PROPERTY_HTTPS_PROPERTIES, new HTTPSProperties(hostnameVerifier, ctx)); 
    config.getSingletons().add(jsonProvider); 

    Client client = Client.create(config); 

    if (debugging) { 
     client.addFilter(new LoggingFilter()); 
    } 
    this.httpClient = client; 
    return this; 
    } 

它建立罚款,但执行的时候,我得到这个错误

用于Java类java.lang.String和Java类型类java.lang.String和MIME媒体类型text/html的消息体读取器;未找到charset = UTF-8 08-12 13:43:41.230 12544-12861/com.xxxxxx.app.xxxxx E/ClientResponse:与MIME媒体类型兼容的已注册邮件正文阅读器为: / - > com.fasterxml.jackson.jaxrs.json.JacksonJsonProvider

在我ApiClient执行该方法时(尝试验证)

private void updateParamsForAuth(String[] authNames, List<Pair> queryParams, Map<String, String> headerParams) { 
    for (String authName : authNames) { 
     Authentication auth = authentications.get(authName); 
    if (auth == null) throw new RuntimeException("Authentication undefined: " + authName); 
    auth.applyToParams(queryParams, headerParams); 
    } 
} 

当我测试与招摇-UI服务器响应它显示它是在正确的类型应用程序/ json

它与服务器端有什么关系要做?因为它工作好几天,然后突然出现错误,我改变了代码客户端。

回答

0

这是服务器端的问题。它会在服务器出现问题时出现连接,我不是后端开发人员,所以我不知道它是什么问题。

0

代码位不显示实际做了什么,但看着我猜想的错误消息,您的客户端已尝试调用服务器并获得一个html响应。您的客户不知道如何解码此响应。我建议你在浏览器中调用URL,看看会发生什么。 这很可能是您要么调用错误的网址,要么您可能需要在呼叫中提供身份验证信息。

+0

没有证书,我已经测试成功对模拟API。 – emmanuel2004

相关问题