Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/cassandra/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java me javax.microedition.pki证书验证失败_Java Me_Httpconnection_Midp 2.0 - Fatal编程技术网

Java me javax.microedition.pki证书验证失败

Java me javax.microedition.pki证书验证失败,java-me,httpconnection,midp-2.0,Java Me,Httpconnection,Midp 2.0,我试图在JavaMeMIDP应用程序中读取来自GoogleSheetsAPI的JSON回复。我用其他地址尝试了以下方法,它可以很好地接收它们的内容,但我想要使用的实际API是Sheets,它总是返回一个“Certificate Failed Verification”异常 HttpConnection c = null; InputStream is = null; StringBuffer str = new StringBuffer(); try { c = (Https

我试图在JavaMeMIDP应用程序中读取来自GoogleSheetsAPI的JSON回复。我用其他地址尝试了以下方法,它可以很好地接收它们的内容,但我想要使用的实际API是Sheets,它总是返回一个“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();
如果URL以Https开头,则Connector.open()会隐式返回一个HttpsConnection,因此它仍然可以工作

HTTPS请求的示例

https://jsonplaceholder.typicode.com/posts/1
这将不起作用,但上面也允许HTTP连接

http://jsonplaceholder.typicode.com/posts/1
这会管用的


然而,Google Sheets需要HTTPS,因此无法通过上述代码获得。如何通过HTTPS向sheets API发出GET请求?谢谢。

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

的请求头中添加mime类型“application/json”,根据我收集的信息,当通过HTTPS连接时,手机似乎使用了较旧版本的SSL或TLS,该版本已被弃用,导致某些API没有响应


我发现,如果您使用Opera Mini web浏览器通过HTTPs发出API请求,它就会工作。给你想要的回应,但仔细观察,Opera似乎会为你得到回应,并通过不同的URL返回。试图提供这些不能使用较新版本的SSL/TLS进行安全连接的旧设备。

在Sun Java Wireless Toolkit for CLDC中,您可以设置权限MIDlet权限。我已经为javax.microedition.io.Connector.https设置了权限,但是它仍然没有返回任何响应。这使得它生成了一个异常
javax.microedition.pki证书验证失败
我已经在网上查看了一下,但找不到太多相关信息。这是索尼爱立信的手机。由于
通信失败,我无法使用默认浏览器浏览https。安全连接失败
,但我可以使用我安装的java app Opera Mini。我将尝试查看Opera中的.java文件,看看它如何处理HTTPS。实际上,我似乎可以使用默认浏览器通过HTTPS访问一些站点。问我是否要继续。但只有一些。可能证实了怀疑。索尼爱立信是什么型号的?大多数索尼爱立信型号不会给你带来任何麻烦,但也有一些型号不是他们自己制造的,比如F305,如果访问一个返回不同mime类型内容的网站,可能会出现这种情况。尝试添加mime类型
application/json;您的请求标头中的charset=UTF-8
。我已使用新代码更新了帖子,但它仍会引发cert failed verification异常。是W995。你的jar是用证书签名的吗?不,我没有在我的jar上签名。没必要。它所做的只是跳过弹出消息。如果您坚持要对jar进行签名,请记住您需要从可信的提供者处获得证书,例如Thawte(这很昂贵)。创造你自己的是行不通的。