javax.microedition.pki证书验证失败

时间:2017-08-20 17:20:57

标签: java-me httpconnection midp-2.0

我正在尝试在Java ME MIDP应用程序中阅读来自Google表格API的JSON回复。我已经尝试了以下其他地址,它收到的内容很好,但我想使用的实际API是表格,它总是返回“证书失败验证”例外。

HttpConnection c = null;
InputStream is = null;
StringBuffer str = new StringBuffer();
try
    {

     c = (HttpsConnection)Connector.open(urlstring);
     c.setRequestMethod(HttpConnection.GET);
     c.setRequestProperty("Content-Type", "application/json; charset=UTF-8");
     c.setRequestProperty("User-Agent","Profile/MIDP-2.1 Configuration/CLDC-1.1");

     is = c.openInputStream();

     int len = (int)c.getLength();
     int ch;

     while ( (ch = is.read() ) != -1)
         {
         str.append((char)ch);
         }


    }

catch( Exception e ){ alert( ""+e ); }

return str.toString();

如果URL以Https开头,则Connector.open()会隐式返回HttpsConnection,因此它仍然可以正常工作。

HTTPS请求的示例

https://jsonplaceholder.typicode.com/posts/1

哪个不起作用,但上面也允许HTTP连接

http://jsonplaceholder.typicode.com/posts/1

哪个会奏效。

Google表格需要使用HTTPS,因此无法通过上述代码获取。如何通过HTTPS向工作表API发出GET请求?谢谢。

2 个答案:

答案 0 :(得分:1)

在为我们的某个游戏实施在线高分系统时,我遇到了类似的问题。它可以在某些手机上获得高分,但在其他手机上无效。说明: 有些手机有自己内置的" MIME类型检查器"。当您致电(HttpConnection)Connector.open(urlstring)时,手机需要text/html响应。当它获得application/json(或其他)响应时,电话会给出自己的"未找到"错误。 不确定您的问题是否相关,但值得一试?看看你是否可以添加一个mime-type" application / json"在HttpConnection

的请求标头中

答案 1 :(得分:0)

从我收集到的内容看来,当通过HTTPS连接时,手机会使用较旧版本的SSL或TLS,因此已被弃用,导致某些API无法响应。

我发现如果您使用Opera Mini Web浏览器通过HTTP发出API请求,它就可以运行。为您提供所需的响应,但仔细观察后,Opera会为您获取响应并通过其他URL返回。试图提供这些不能使用较新版本的SSL / TLS的旧设备来自行建立安全连接。