1

我正在尝试在 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

哪个会起作用。

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

4

2 回答 2

1

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

于 2017-08-21T05:13:54.000 回答
0

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

我发现如果您使用 Opera Mini 网络浏览器通过 HTTPs 发出 API 请求,它就可以工作。为您提供所需的响应,但仔细检查后,似乎 Opera 会为您获取响应并通过不同的 URL 将其返回。试图为这些无法使用新版本 SSL/TLS 的旧设备提供自己的安全连接。

于 2017-09-08T16:26:20.897 回答