javax.microedition.pki 证书验证失败



我正在尝试在Java ME MIDP应用程序中读取来自Google Sheets API的JSON回复。我已经对其他地址尝试了以下内容,它接收其内容很好,但我想使用的实际 API 是 Sheets,它总是返回"证书验证失败"异常。

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

这将起作用。

然而,谷歌表格需要HTTPS,因此无法通过上面的代码获得。如何通过 HTTPS 向工作表 API 发出 GET 请求?谢谢。

我在为我们的一款游戏实施在线高分系统时遇到了类似的问题。它可以在某些手机上获得高分,但在其他手机上不起作用。解释: 有些手机有自己的内置"MIME型检查器"。当您呼叫(HttpConnection)Connector.open(urlstring)时,电话期望得到text/html响应。当它收到application/json(或其他(响应时,手机会给出自己的"未找到"错误。 不确定您的问题是否相关,但值得一试?看看是否可以在HttpConnection的请求标头中添加 mime 类型的"application/json"。

从我收集到的信息来看,当通过HTTPS连接时,手机似乎使用旧版本的SSL或TLS,该版本已被弃用,导致某些API没有响应。

我发现,如果您使用 Opera Mini 网络浏览器通过 HTTP 发出 API 请求,它可以工作。给你所需的响应,但仔细检查,似乎 Opera 会为你得到回应,并通过不同的 URL 返回。尝试提供这些无法使用较新版本的SSL/TLS自行建立安全连接的旧设备。

最新更新