Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/google-app-engine/4.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
在Google App Engine测试服务器(Java)上发出http请求时出现SSLHandshakeException_Java_Google App Engine_Ssl_Httprequest_Sslhandshakeexception - Fatal编程技术网

在Google App Engine测试服务器(Java)上发出http请求时出现SSLHandshakeException

在Google App Engine测试服务器(Java)上发出http请求时出现SSLHandshakeException,java,google-app-engine,ssl,httprequest,sslhandshakeexception,Java,Google App Engine,Ssl,Httprequest,Sslhandshakeexception,我正在尝试使用谷歌应用程序引擎制作一个应用程序。部分功能要求我通过http从第三方服务器提取日历数据。请务必注意,我连接的服务器不使用ssl。因此,目标url只包含“http://” 无论如何,我在一个普通的Java应用程序中编写了一些代码作为概念证明 try { // Create url URL targetUrl = new URL(target); // Open the connection URLConnec

我正在尝试使用谷歌应用程序引擎制作一个应用程序。部分功能要求我通过http从第三方服务器提取日历数据。请务必注意,我连接的服务器不使用ssl。因此,目标url只包含“http://”

无论如何,我在一个普通的Java应用程序中编写了一些代码作为概念证明

    try {

        // Create url
        URL targetUrl = new URL(target);

        // Open the connection
        URLConnection connection = targetUrl.openConnection();

        // Create InputStream
        InputStream inStream = connection.getInputStream();

        // Parse calendar data using iCal4j
        CalendarBuilder builder = new CalendarBuilder();
        theCalendar = builder.build(inStream);

        // Close the connection
        inStream.close();

    } catch(IOException e) {
        e.printStackTrace();
    } catch (ParserException e) {
        e.printStackTrace();
    }
因此,我在Java应用程序中运行了这段代码,它工作得非常出色。在看到它工作之后,我决定尝试将相同的代码实现到我在Google App Engine项目中创建的测试servlet中。但是,在允许它执行时,我得到以下错误:

javax.net.ssl.SSLHandshakeException: Could not verify SSL certificate for URL: http://the_url
at com.google.appengine.api.urlfetch.URLFetchServiceImpl.convertApplicationException(URLFetchServiceImpl.java:175)
at com.google.appengine.api.urlfetch.URLFetchServiceImpl.fetch(URLFetchServiceImpl.java:45)
at com.google.apphosting.utils.security.urlfetch.URLFetchServiceStreamHandler$Connection.fetchResponse(URLFetchServiceStreamHandler.java:543)
at com.google.apphosting.utils.security.urlfetch.URLFetchServiceStreamHandler$Connection.getInputStream(URLFetchServiceStreamHandler.java:422)
at java.net.URL.openStream(URL.java:1037)
at com.amftech.website.CalendarServlet.doGet(CalendarServlet.java:36)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:617)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
at org.mortbay.jetty.servlet.ServletHolder.handle(ServletHolder.java:511)
at org.mortbay.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1166)
at com.google.appengine.api.socket.dev.DevSocketFilter.doFilter(DevSocketFilter.java:74)
at org.mortbay.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1157)
at com.google.appengine.tools.development.ResponseRewriterFilter.doFilter(ResponseRewriterFilter.java:134)
at org.mortbay.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1157)
at com.google.appengine.tools.development.HeaderVerificationFilter.doFilter(HeaderVerificationFilter.java:34)
at org.mortbay.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1157)
at com.google.appengine.api.blobstore.dev.ServeBlobFilter.doFilter(ServeBlobFilter.java:63)
at org.mortbay.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1157)
at com.google.apphosting.utils.servlet.TransactionCleanupFilter.doFilter(TransactionCleanupFilter.java:43)
at org.mortbay.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1157)
at com.google.appengine.tools.development.StaticFileFilter.doFilter(StaticFileFilter.java:122)
at org.mortbay.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1157)
at com.google.appengine.tools.development.DevAppServerModulesFilter.doDirectRequest(DevAppServerModulesFilter.java:366)
at com.google.appengine.tools.development.DevAppServerModulesFilter.doDirectModuleRequest(DevAppServerModulesFilter.java:349)
at com.google.appengine.tools.development.DevAppServerModulesFilter.doFilter(DevAppServerModulesFilter.java:116)
at org.mortbay.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1157)
at org.mortbay.jetty.servlet.ServletHandler.handle(ServletHandler.java:388)
at org.mortbay.jetty.security.SecurityHandler.handle(SecurityHandler.java:216)
at org.mortbay.jetty.servlet.SessionHandler.handle(SessionHandler.java:182)
at org.mortbay.jetty.handler.ContextHandler.handle(ContextHandler.java:765)
at org.mortbay.jetty.webapp.WebAppContext.handle(WebAppContext.java:418)
at com.google.appengine.tools.development.DevAppEngineWebAppContext.handle(DevAppEngineWebAppContext.java:95)
at org.mortbay.jetty.handler.HandlerWrapper.handle(HandlerWrapper.java:152)
at com.google.appengine.tools.development.JettyContainerService$ApiProxyHandler.handle(JettyContainerService.java:508)
at org.mortbay.jetty.handler.HandlerWrapper.handle(HandlerWrapper.java:152)
at org.mortbay.jetty.Server.handle(Server.java:326)
at org.mortbay.jetty.HttpConnection.handleRequest(HttpConnection.java:542)
at org.mortbay.jetty.HttpConnection$RequestHandler.headerComplete(HttpConnection.java:923)
at org.mortbay.jetty.HttpParser.parseNext(HttpParser.java:547)
at org.mortbay.jetty.HttpParser.parseAvailable(HttpParser.java:212)
at org.mortbay.jetty.HttpConnection.handle(HttpConnection.java:404)
at org.mortbay.io.nio.SelectChannelEndPoint.run(SelectChannelEndPoint.java:409)
at org.mortbay.thread.QueuedThreadPool$PoolThread.run(QueuedThreadPool.java:582)
我还注意到,在启动服务器时,会输出以下警告:

Jun 12, 2017 2:43:14 PM com.google.appengine.repackaged.com.google.protobuf.UnsafeUtil supportsUnsafeByteBufferOperations
WARNING: platform method missing - proto runtime falling back to safer methods: java.security.AccessControlException: access denied ("java.lang.RuntimePermission" "accessClassInPackage.sun.misc")
Jun 12, 2017 2:43:14 PM com.google.appengine.repackaged.com.google.protobuf.UnsafeUtil supportsUnsafeArrayOperations
WARNING: platform method missing - proto runtime falling back to safer methods: java.security.AccessControlException: access denied ("java.lang.RuntimePermission" "accessClassInPackage.sun.misc")
Jun 12, 2017 2:43:14 PM com.google.appengine.repackaged.com.google.protobuf.UnsafeUtil supportsUnsafeCopyMemory
WARNING: copyMemory is missing from platform - proto runtime falling back to safer methods.

我不知道这些警告是否有什么意义,但我想它们可能有意义。我的测试服务器设置有问题吗?我的项目设置?我搜索了整个互联网,除了“确保下载证书”之外,没有找到任何东西。但是我连接的服务器甚至不使用SSL,为什么它会抱怨SSL握手?

好的,所以我不确定发生了什么,但我想我的设置不知怎么搞砸了。我可以通过删除Eclipse、卸载Google Cloud SDK、卸载java、在Eclipse中重置我的工作区以及重新安装和重新配置一切来解决这个问题。所以我希望我能帮助有同样问题的人

好的,所以我不确定发生了什么,但我想我的设置不知怎么搞砸了。我可以通过删除Eclipse、卸载Google Cloud SDK、卸载java、在Eclipse中重置我的工作区以及重新安装和重新配置一切来解决这个问题。所以我希望我能帮助有同样问题的人

如果在Google App Engine中更新到java8运行时,则需要在appengine-web.xml上设置。有关这方面的更多信息,请查看

如果您在Google App Engine中更新到java8运行时,您需要在appengine-web.xml上设置。有关这方面的更多信息,请参阅