From 87f5519d4de771ba186b0f35b5b16f7d412fdbfb Mon Sep 17 00:00:00 2001 From: skyjilygao Date: Fri, 6 Dec 2024 10:54:36 +0800 Subject: [PATCH] set timeout for connection --- .../java/com/facebook/ads/sdk/APIContext.java | 24 +++++++++++++++++++ .../java/com/facebook/ads/sdk/APIRequest.java | 13 +++++++++- 2 files changed, 36 insertions(+), 1 deletion(-) diff --git a/src/main/java/com/facebook/ads/sdk/APIContext.java b/src/main/java/com/facebook/ads/sdk/APIContext.java index c0f34783..0d45c42e 100644 --- a/src/main/java/com/facebook/ads/sdk/APIContext.java +++ b/src/main/java/com/facebook/ads/sdk/APIContext.java @@ -45,6 +45,14 @@ public class APIContext { private String version; protected boolean isDebug = false; protected PrintStream logger = System.out; + /** + * @see java.net.URLConnection#setConnectTimeout(int) + */ + private int connectTimeout; + /** + * @see java.net.URLConnection#setReadTimeout(int) + */ + private int readTimeout; public APIContext(String endpointBase, String videoEndpointBase, String version, String accessToken, String appSecret, String appID, boolean logCrash) { this.version = version; @@ -180,4 +188,20 @@ public String getAppID() { public static void disableCrashReport() { CrashReporter.disable(); } + + public int getConnectTimeout() { + return connectTimeout; + } + + public void setConnectTimeout(int connectTimeout) { + this.connectTimeout = connectTimeout; + } + + public int getReadTimeout() { + return readTimeout; + } + + public void setReadTimeout(int readTimeout) { + this.readTimeout = readTimeout; + } } diff --git a/src/main/java/com/facebook/ads/sdk/APIRequest.java b/src/main/java/com/facebook/ads/sdk/APIRequest.java index 9864c01c..f4ff5304 100644 --- a/src/main/java/com/facebook/ads/sdk/APIRequest.java +++ b/src/main/java/com/facebook/ads/sdk/APIRequest.java @@ -23,7 +23,6 @@ package com.facebook.ads.sdk; import java.nio.file.Files; -import java.util.Arrays; import java.util.ArrayList; import java.util.HashMap; import java.util.List; @@ -535,6 +534,7 @@ public ResponseWrapper sendGet(String apiUrl, Map allParams, API context.log("GET: " + url.toString()); HttpsURLConnection con = (HttpsURLConnection) url.openConnection(); + setTimeout(con, context); con.setRequestMethod("GET"); con.setRequestProperty("User-Agent", USER_AGENT); con.setRequestProperty("Content-Type","application/x-www-form-urlencoded"); @@ -542,12 +542,22 @@ public ResponseWrapper sendGet(String apiUrl, Map allParams, API return readResponse(con); } + /** + * set timeout for connection + * @param con connection + * @param context context + */ + public void setTimeout(HttpsURLConnection con, APIContext context){ + con.setConnectTimeout(Math.max(context.getConnectTimeout(), 0)); + con.setReadTimeout(Math.max(context.getReadTimeout(), 0)); + } public ResponseWrapper sendPost(String apiUrl, Map allParams, APIContext context) throws APIException, IOException { String boundary = "--------------------------" + new Random().nextLong(); URL url = new URL(apiUrl); context.log("Post: " + url.toString()); HttpsURLConnection con = (HttpsURLConnection) url.openConnection(); + setTimeout(con, context); con.setRequestMethod("POST"); con.setRequestProperty("User-Agent", USER_AGENT); con.setRequestProperty("Content-Type","multipart/form-data; boundary=" + boundary); @@ -601,6 +611,7 @@ public ResponseWrapper sendDelete(String apiUrl, Map allParams, context.log("Delete: " + url.toString()); HttpsURLConnection con = (HttpsURLConnection) url.openConnection(); + setTimeout(con, context); con.setRequestMethod("DELETE"); con.setRequestProperty("User-Agent", USER_AGENT); con.setRequestProperty("Content-Type","multipart/form-data; boundary=" + boundary);