javax.microedition.pki 证书验证失败
javax.microedition.pki Certificate Failed Verification
我正在尝试在 Java ME MIDP 应用程序中读取来自 Google 工作表 API 的 JSON 回复。我已经用其他地址尝试了以下内容,它收到了它们的内容,但我想使用的实际 API 是表格,它总是 returns 一个 "Certificate Failed Verification" 异常。
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();
Connector.open() 如果 URL 以 Https 开头,则隐式 returns 一个 HttpsConnection,因此它应该仍然有效。
HTTPS 请求示例
https://jsonplaceholder.typicode.com/posts/1
这行不通,但上面还允许 HTTP 连接
http://jsonplaceholder.typicode.com/posts/1
哪个会起作用。
Google 然而,Sheets 需要 HTTPS,因此无法通过上述代码获得。如何通过 HTTPS 向工作表 API 发出 GET 请求?谢谢。
我在为我们的一款游戏实施在线高分系统时遇到了类似的问题。它会在某些 phone 上获得高分,但在其他 phone 上不起作用。说明:
一些 phone 有自己的内置 "MIME-type checker"。当您调用 (HttpConnection)Connector.open(urlstring)
时,phone 需要 text/html
响应。当它获得 application/json
(或其他)响应时,phone 会给出自己的 "Not found" 错误。
不确定您的问题是否相关,但值得一试吗?看看能不能在 HttpConnection
.
的请求头中添加 mime-type "application/json"
从我收集到的信息看来,当通过 HTTPS 连接时,phone 使用旧版本的 SSL 或 TLS,该版本已被弃用,导致某些 API 无法响应。
我发现如果您使用 Opera Mini 网络浏览器通过 HTTPS 发出 API 请求,它就可以工作。为您提供所需的响应,但仔细观察后,Opera 似乎为您获取响应并通过不同的 URL 返回。试图为这些无法使用新版本 SSL/TLS 的旧设备提供安全连接。
我正在尝试在 Java ME MIDP 应用程序中读取来自 Google 工作表 API 的 JSON 回复。我已经用其他地址尝试了以下内容,它收到了它们的内容,但我想使用的实际 API 是表格,它总是 returns 一个 "Certificate Failed Verification" 异常。
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();
Connector.open() 如果 URL 以 Https 开头,则隐式 returns 一个 HttpsConnection,因此它应该仍然有效。
HTTPS 请求示例
https://jsonplaceholder.typicode.com/posts/1
这行不通,但上面还允许 HTTP 连接
http://jsonplaceholder.typicode.com/posts/1
哪个会起作用。
Google 然而,Sheets 需要 HTTPS,因此无法通过上述代码获得。如何通过 HTTPS 向工作表 API 发出 GET 请求?谢谢。
我在为我们的一款游戏实施在线高分系统时遇到了类似的问题。它会在某些 phone 上获得高分,但在其他 phone 上不起作用。说明:
一些 phone 有自己的内置 "MIME-type checker"。当您调用 (HttpConnection)Connector.open(urlstring)
时,phone 需要 text/html
响应。当它获得 application/json
(或其他)响应时,phone 会给出自己的 "Not found" 错误。
不确定您的问题是否相关,但值得一试吗?看看能不能在 HttpConnection
.
从我收集到的信息看来,当通过 HTTPS 连接时,phone 使用旧版本的 SSL 或 TLS,该版本已被弃用,导致某些 API 无法响应。
我发现如果您使用 Opera Mini 网络浏览器通过 HTTPS 发出 API 请求,它就可以工作。为您提供所需的响应,但仔细观察后,Opera 似乎为您获取响应并通过不同的 URL 返回。试图为这些无法使用新版本 SSL/TLS 的旧设备提供安全连接。