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
Java 在线但非本地发布请求超时[谷歌应用程序引擎]_Java_Google App Engine - Fatal编程技术网

Java 在线但非本地发布请求超时[谷歌应用程序引擎]

Java 在线但非本地发布请求超时[谷歌应用程序引擎],java,google-app-engine,Java,Google App Engine,当我向指定的URL发出post请求时,我遇到了Google应用程序引擎超时的问题。当我在上执行测试请求时,它工作得非常好。当我在本地服务器上运行代码时,运行得非常好。当我将它部署到Google App Engine并在线测试时,无论我给它多少超时限制,它都会超时(测试时间长达1分钟)。我不知道是什么原因导致它在网上而不是本地出现。下面是我在出错时得到的代码和堆栈跟踪: package com.servlet.thing; import java.io.BufferedReader; impor

当我向指定的URL发出post请求时,我遇到了Google应用程序引擎超时的问题。当我在上执行测试请求时,它工作得非常好。当我在本地服务器上运行代码时,运行得非常好。当我将它部署到Google App Engine并在线测试时,无论我给它多少超时限制,它都会超时(测试时间长达1分钟)。我不知道是什么原因导致它在网上而不是本地出现。下面是我在出错时得到的代码和堆栈跟踪:

package com.servlet.thing;

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;
import java.net.HttpURLConnection;
import java.net.URL;
import java.net.URLConnection;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

import javax.net.ssl.HttpsURLConnection;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

@SuppressWarnings("serial")
public class ServletThingServlet extends HttpServlet {
private static final String PASS = "testpassword123";

public void doGet(HttpServletRequest req, HttpServletResponse resp) throws IOException {
    URL url = new URL("https://api.roblox.com/login/v1");
    HttpURLConnection con = (HttpURLConnection) url.openConnection();
    //URLConnection con = url.openConnection();
    con.setConnectTimeout(60000);
    // Doesn't get past here online
    resp.getWriter().println("connected");

    con.setDoOutput(true);
    con.setRequestMethod("POST");
    resp.getWriter().println("checkpoint 1");

    OutputStreamWriter writer = new OutputStreamWriter(con.getOutputStream());
    writer.write("username=TestPromotionAcc&password=" + PASS);
    writer.flush();
    writer.close();
    resp.getWriter().println("checkpoint 2");

    HashMap<String, List<String>> map = (HashMap<String, List<String>>) con.getHeaderFields();

    if (con.getResponseCode() == HttpURLConnection.HTTP_OK || con.getResponseCode() == HttpURLConnection.HTTP_NOT_FOUND) {
        StringBuffer response = new StringBuffer();
        String line;

        BufferedReader reader = new BufferedReader(new InputStreamReader(con.getInputStream()));

        while ((line = reader.readLine()) != null) {
            response.append(line);
        }

        System.out.println("--- HEADER FIELDS ---\n");

        for (Map.Entry<String, List<String>> entry : map.entrySet()) {
            if (entry.getKey().equalsIgnoreCase("set-cookie")) {
                System.out.println("Value : " + entry.getValue());
                resp.getWriter().println("Set cookies: " + entry.getValue());
            }
        }

        reader.close();
        System.out.println(response.toString());
    } else {
        resp.getWriter().println(con.getResponseCode() + ": " + con.getResponseMessage());
    }
}
}
package com.servlet.thing;
导入java.io.BufferedReader;
导入java.io.IOException;
导入java.io.InputStreamReader;
导入java.io.OutputStreamWriter;
导入java.net.HttpURLConnection;
导入java.net.URL;
导入java.net.URLConnection;
导入java.util.HashMap;
导入java.util.List;
导入java.util.Map;
导入javax.net.ssl.HttpsURLConnection;
导入javax.servlet.http.HttpServlet;
导入javax.servlet.http.HttpServletRequest;
导入javax.servlet.http.HttpServletResponse;
@抑制警告(“串行”)
公共类ServletThingServlet扩展了HttpServlet{
私有静态最终字符串PASS=“testpassword123”;
public void doGet(HttpServletRequest-req、HttpServletResponse-resp)引发IOException{
URL=新URL(“https://api.roblox.com/login/v1");
HttpURLConnection con=(HttpURLConnection)url.openConnection();
//URLConnection con=url.openConnection();
con.设置连接超时(60000);
//不能在网上通过这里
resp.getWriter().println(“已连接”);
con.设置输出(真);
con.setRequestMethod(“POST”);
resp.getWriter().println(“检查点1”);
OutputStreamWriter writer=新的OutputStreamWriter(con.getOutputStream());
writer.write(“username=TestPromotionAcc&password=“+PASS”);
writer.flush();
writer.close();
resp.getWriter().println(“检查点2”);
HashMap=(HashMap)con.getHeaderFields();
如果(con.getResponseCode()==HttpURLConnection.HTTP|u确定| | con.getResponseCode()==HttpURLConnection.HTTP|u未找到){
StringBuffer响应=新的StringBuffer();
弦线;
BufferedReader=new BufferedReader(new InputStreamReader(con.getInputStream());
而((line=reader.readLine())!=null){
响应。追加(行);
}
System.out.println(“---标题字段---\n”);
对于(Map.Entry:Map.entrySet()){
if(entry.getKey().equalsIgnoreCase(“设置cookie”)){
System.out.println(“Value:+entry.getValue());
resp.getWriter().println(“设置cookies:+entry.getValue());
}
}
reader.close();
System.out.println(response.toString());
}否则{
resp.getWriter().println(con.getResponseCode()+“:”+con.getResponseMessage());
}
}
}
这是堆栈跟踪:

来自servlet的未捕获异常 java.net.SocketTimeoutException:获取URL时超时: 位于com.google.appengine.api.urlfetch.URLFetchServiceImpl.convertApplicationException(URLFetchServiceImpl.java:179) 位于com.google.appengine.api.urlfetch.URLFetchServiceImpl.fetch(URLFetchServiceImpl.java:45) 位于com.google.apphosting.utils.security.urlfetch.URLFetchServiceStreamHandler$Connection.fetchResponse(URLFetchServiceStreamHandler.java:543) 位于com.google.apphosting.utils.security.urlfetch.URLFetchServiceStreamHandler$Connection.getInputStream(URLFetchServiceStreamHandler.java:422) 位于com.google.apphosting.utils.security.urlfetch.URLFetchServiceStreamHandler$Connection.getResponseCode(URLFetchServiceStreamHandler.java:275) 位于com.servlet.thing.ServletThingServlet.doGet(ServletThingServlet.java:30) 位于javax.servlet.http.HttpServlet.service(HttpServlet.java:617) 位于javax.servlet.http.HttpServlet.service(HttpServlet.java:717) 位于org.mortbay.jetty.servlet.ServletHolder.handle(ServletHolder.java:511) 位于org.mortbay.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1166) 在com.google.apphosting.utils.servlet.ParseBlobUploadFilter.doFilter(ParseBlobUploadFilter.java:125)上 位于org.mortbay.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1157) 位于com.google.apphosting.runtime.jetty.SaveSessionFilter.doFilter(SaveSessionFilter.java:37) 位于org.mortbay.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1157) 位于com.google.apphosting.utils.servlet.JdbcMySqlConnectionCleanupFilter.doFilter(JdbcMySqlConnectionCleanupFilter.java:60) 位于org.mortbay.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1157) 位于com.google.apphosting.utils.servlet.TransactionCleanupFilter.doFilter(TransactionCleanupFilter.java:48) 位于org.mortbay.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1157) 位于org.mortbay.jetty.servlet.ServletHandler.handle(ServletHandler.java:388) 位于org.mortbay.jetty.security.SecurityHandler.handle(SecurityHandler.java:216) 位于org.mortbay.jetty.servlet.SessionHandler.handle(SessionHandler.java:182) 位于org.mortbay.jetty.handler.ContextHandler.handle(ContextHandler.java:765) 位于org.mortbay.jetty.webapp.WebAppContext.handle(WebAppContext.java:418) 位于com.google.apphosting.runtime.jetty.AppVersionHandlerMap.handle(AppVersionHandlerMap.java:257) 位于org.mortbay.jetty.handler.HandlerWrapper.handle(HandlerWrapper.java:152) 位于org.mortbay.jetty.Server.handle(Server.java:326) 位于org.mortbay.jetty.HttpConnection.handleRequest(HttpConnection.java:542) 位于org.mortbay.jetty.HttpConnection$RequestHandler.headerComplete(HttpConnection.java:923) 位于com.google.apphosting.runtime.jetty.RpcRequestParser.parseAvailable(RpcRequestParser.java:76) 位于org.mortbay.jetty.HttpConnection.handle(HttpConnection.java:404) 在com.google.apphosting.runtime.jetty.JettyServletEngineAdapte