Java HttpsURLConnection经常出现504错误

Java HttpsURLConnection经常出现504错误,java,java-8,Java,Java 8,Iam在Java-1.8中使用HttpsURLconnection并使用一些参数发布到URL。很多时候我得到200个成功响应,但有时我得到504网关超时错误 我很长一段时间都在与这个错误作斗争。任何指导都会大有裨益。下面是我使用的代码 public static void sendPostRequest(String url, ResourceRequest resourceRequest, ResourceResponse resourceResponse) { St

Iam在Java-1.8中使用HttpsURLconnection并使用一些参数发布到URL。很多时候我得到200个成功响应,但有时我得到504网关超时错误

我很长一段时间都在与这个错误作斗争。任何指导都会大有裨益。下面是我使用的代码

public static void sendPostRequest(String url, ResourceRequest resourceRequest,
        ResourceResponse resourceResponse)
{ 
    String token_response = "";

                String grant_password = PrefsPropsUtil.getString("grant.type");
                String client_id = PrefsPropsUtil.getString("client.id");
                String user_name = PrefsPropsUtil.getString("user.name");
                String client_secret = PrefsPropsUtil.getString("client.secret");
                PrintWriter out = resourceResponse.getWriter();
                URL obj = new URL(url);

                System.setProperty("jdk.http.auth.proxying.disabledSchemes", "");
                System.setProperty("jdk.http.auth.tunneling.disabledSchemes", "");
            HttpsURLConnection con = (HttpsURLConnection) obj.openConnection();
               //add request header
                con.setRequestMethod("POST");
              //  con.setRequestProperty("User-Agent", USER_AGENT);
                con.setRequestProperty("Accept-Language", "en-US,en;q=0.5");
                String urlParameters = "grant_type=" + grant_password + "&client_id=" + client_id + "&username=&client_secret=" + client_secret;
                // Send post request
                con.setDoOutput(true);
                DataOutputStream wr = new DataOutputStream(con.getOutputStream());
                wr.writeBytes(urlParameters);
                wr.flush();
                wr.close();
                int responseCode = con.getResponseCode();
                BufferedReader in = new BufferedReader(
                        new InputStreamReader(con.getInputStream()));
                String inputLine;
                StringBuffer response = new StringBuffer();
                while ((inputLine = in.readLine()) != null) {
                    response.append(inputLine);
                }
                in.close();
                con.disconnect();
                //print result
                System.out.println(response.toString());
                out.println(response);

}
在上面的代码中,我不知道我在哪里出错,请纠正我。

5xx代码被视为服务器错误。因此,这很可能不是请求方的问题

504网关超时:服务器充当网关或代理,并且 未收到来自上游服务器的及时响应


我建议您检查服务器是否有正确的代理设置或上游服务器的稳定性等。从HttpsURLconnection可以说的不多,它似乎是通用的。

这取决于您调用的url,而不是调用方的错误。Liferay不是topicAs@Danielebagio所指出的正确答案,这是一个服务器端错误。似乎无论是哪个网关/防火墙,与上游服务器的连接都有问题。你的代码对这个没有影响。考虑在你的方法中有一个具有指数退避时间的内置重试机制。这可以克服查询源上随机出现的零星问题。日志记录还可能显示定义良好的模式,例如:每天发生的备份。