Skip to content

Commit 757e46a

Browse files
committed
Merge pull request #81 from akankaria/master
Fixing java sdk issues
2 parents c665734 + 150738a commit 757e46a

4 files changed

Lines changed: 63 additions & 18 deletions

File tree

anet-java-sdk.properties

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -23,4 +23,8 @@ md5.hash.key=MD5_HASH_KEY
2323
# http.ProxyUse=true
2424
# https.proxyHost=HTTPS_PROXY_HOST
2525
# https.proxyPort=HTTPS_PROXY_PORT
26-
# https.proxyUse=true
26+
# https.proxyUse=true
27+
28+
#Settings for HTTP connection timeouts (in milliseconds)
29+
http.ConnectionTimeout=30000
30+
http.ReadTimeout=30000

src/main/java/net/authorize/util/Constants.java

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -25,5 +25,11 @@ public final class Constants {
2525

2626
public static final String PROP_API_LOGINID_APPLEPAY = "api.login.id.applepay";
2727
public static final String PROP_TRANSACTION_KEY_APPLEPAY = "transaction.key.applepay";
28-
public static final String PROP_MD5_HASHKEY_APPLEPAY = "md5.hash.key.applepay";
28+
public static final String PROP_MD5_HASHKEY_APPLEPAY = "md5.hash.key.applepay";
29+
30+
public static final String HTTP_CONNECTION_TIME_OUT = "http.ConnectionTimeout";
31+
public static final int HTTP_CONNECTION_TIME_OUT_DEFAULT_VALUE = 30000;
32+
33+
public static final String HTTP_READ_TIME_OUT = "http.ReadTimeout";
34+
public static final int HTTP_READ_TIME_OUT_DEFAULT_VALUE = 30000;
2935
}

src/main/java/net/authorize/util/HttpClient.java

Lines changed: 28 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -11,10 +11,6 @@
1111
import java.util.HashMap;
1212
import java.util.Map;
1313

14-
import net.authorize.Environment;
15-
import net.authorize.ResponseField;
16-
import net.authorize.Transaction;
17-
1814
import org.apache.commons.logging.Log;
1915
import org.apache.commons.logging.LogFactory;
2016
import org.apache.http.HttpEntity;
@@ -25,8 +21,14 @@
2521
import org.apache.http.entity.StringEntity;
2622
import org.apache.http.impl.client.DefaultHttpClient;
2723
import org.apache.http.params.CoreProtocolPNames;
24+
import org.apache.http.params.HttpConnectionParams;
2825
import org.apache.http.protocol.HTTP;
2926

27+
import net.authorize.Environment;
28+
import net.authorize.ResponseField;
29+
import net.authorize.Transaction;
30+
31+
3032
/**
3133
* Transportation object used to facilitate the communication with the respective gateway.
3234
*
@@ -40,9 +42,14 @@ public class HttpClient {
4042
static boolean UseProxy = Environment.getBooleanProperty(Constants.HTTPS_USE_PROXY);
4143
static String ProxyHost = Environment.getProperty(Constants.HTTPS_PROXY_HOST);
4244
static int ProxyPort = Environment.getIntProperty(Constants.HTTPS_PROXY_PORT);
43-
45+
static int httpConnectionTimeout = Environment.getIntProperty(Constants.HTTP_CONNECTION_TIME_OUT);
46+
static int httpReadTimeout = Environment.getIntProperty(Constants.HTTP_READ_TIME_OUT);
47+
4448
static {
4549
LogHelper.info(logger, "Use Proxy: '%s'", UseProxy);
50+
51+
httpConnectionTimeout = (httpConnectionTimeout == 0 ? Constants.HTTP_CONNECTION_TIME_OUT_DEFAULT_VALUE : httpConnectionTimeout );
52+
httpReadTimeout = (httpReadTimeout == 0 ? Constants.HTTP_READ_TIME_OUT_DEFAULT_VALUE : httpReadTimeout);
4653
}
4754
/**
4855
* Creates the http post object for an environment and transaction container.
@@ -71,18 +78,29 @@ private static HttpPost createHttpPost(Environment env, Transaction transaction)
7178
httpPost = new HttpPost(postUrl);
7279

7380
httpPost.getParams().setBooleanParameter(CoreProtocolPNames.USE_EXPECT_CONTINUE, false);
81+
82+
//set the tcp connection timeout
83+
httpPost.getParams().setIntParameter(HttpConnectionParams.CONNECTION_TIMEOUT, httpConnectionTimeout);
84+
//set the time out on read-data request
85+
httpPost.getParams().setIntParameter(HttpConnectionParams.SO_TIMEOUT, httpReadTimeout);
86+
7487
httpPost.setHeader("Content-Type", "application/x-www-form-urlencoded; charset=utf-8");
75-
76-
httpPost.setEntity(new StringEntity(transaction.toNVPString()));
88+
httpPost.setEntity(new StringEntity(transaction.toNVPString(), HTTP.UTF_8));
7789
} else if (transaction instanceof net.authorize.arb.Transaction ||
7890
transaction instanceof net.authorize.cim.Transaction ||
7991
transaction instanceof net.authorize.reporting.Transaction) {
8092

8193
postUrl = new URI(env.getXmlBaseUrl() + "/xml/v1/request.api");
8294
httpPost = new HttpPost(postUrl);
83-
httpPost.getParams().setBooleanParameter(CoreProtocolPNames.USE_EXPECT_CONTINUE, false);
84-
httpPost.setHeader("Content-Type", "text/xml; charset=utf-8");
85-
httpPost.setEntity(new StringEntity(transaction.toXMLString()));
95+
httpPost.getParams().setBooleanParameter(CoreProtocolPNames.USE_EXPECT_CONTINUE, false);
96+
97+
//set the TCP connection timeout
98+
httpPost.getParams().setIntParameter(HttpConnectionParams.CONNECTION_TIMEOUT, httpConnectionTimeout);
99+
//set the time out on read-data request
100+
httpPost.getParams().setIntParameter(HttpConnectionParams.SO_TIMEOUT, httpReadTimeout);
101+
102+
httpPost.setHeader("Content-Type", "text/xml; charset=utf-8");
103+
httpPost.setEntity(new StringEntity(transaction.toXMLString(), HTTP.UTF_8));
86104
}
87105

88106
return httpPost;

src/main/java/net/authorize/util/HttpUtility.java

Lines changed: 23 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -15,15 +15,17 @@
1515

1616
import javax.xml.bind.JAXBException;
1717

18-
import net.authorize.Environment;
19-
import net.authorize.api.contract.v1.ANetApiRequest;
20-
import net.authorize.api.contract.v1.ANetApiResponse;
21-
2218
import org.apache.commons.logging.Log;
2319
import org.apache.commons.logging.LogFactory;
2420
import org.apache.http.client.methods.HttpPost;
2521
import org.apache.http.entity.StringEntity;
2622
import org.apache.http.params.CoreProtocolPNames;
23+
import org.apache.http.params.HttpConnectionParams;
24+
import org.apache.http.protocol.HTTP;
25+
26+
import net.authorize.Environment;
27+
import net.authorize.api.contract.v1.ANetApiRequest;
28+
import net.authorize.api.contract.v1.ANetApiResponse;
2729

2830
/**
2931
* Helper methods for http calls
@@ -34,6 +36,15 @@ public final class HttpUtility {
3436

3537
private static Log logger = LogFactory.getLog(HttpUtility.class);
3638

39+
static int httpConnectionTimeout = Environment.getIntProperty(Constants.HTTP_CONNECTION_TIME_OUT);
40+
static int httpReadTimeout = Environment.getIntProperty(Constants.HTTP_READ_TIME_OUT);
41+
42+
static {
43+
44+
httpConnectionTimeout = (httpConnectionTimeout == 0 ? Constants.HTTP_CONNECTION_TIME_OUT_DEFAULT_VALUE : httpConnectionTimeout );
45+
httpReadTimeout = (httpReadTimeout == 0 ? Constants.HTTP_READ_TIME_OUT_DEFAULT_VALUE : httpReadTimeout);
46+
}
47+
3748
/**
3849
* Default C'tor, cannot be instantiated
3950
*/
@@ -60,12 +71,18 @@ static HttpPost createPostRequest(Environment env, ANetApiRequest request) throw
6071
logger.debug(String.format("MerchantInfo->LoginId/TransactionKey: '%s':'%s'", request.getMerchantAuthentication().getName(), request.getMerchantAuthentication().getTransactionKey() ));
6172
logger.debug(String.format("Posting request to Url: '%s'", postUrl));
6273
httpPost = new HttpPost(postUrl);
63-
httpPost.getParams().setBooleanParameter(CoreProtocolPNames.USE_EXPECT_CONTINUE, false);
74+
httpPost.getParams().setBooleanParameter(CoreProtocolPNames.USE_EXPECT_CONTINUE, false);
75+
76+
//set the tcp connection timeout
77+
httpPost.getParams().setIntParameter(HttpConnectionParams.CONNECTION_TIMEOUT, httpConnectionTimeout);
78+
//set the time out on read-data request
79+
httpPost.getParams().setIntParameter(HttpConnectionParams.SO_TIMEOUT, httpReadTimeout);
80+
6481
httpPost.setHeader("Content-Type", "text/xml; charset=utf-8");
6582

6683
String xmlRequest = XmlUtility.getXml(request);
6784
logger.debug(String.format("Request: '%s%s%s'", LogHelper.LineSeparator, xmlRequest, LogHelper.LineSeparator));
68-
httpPost.setEntity(new StringEntity(xmlRequest));
85+
httpPost.setEntity(new StringEntity(xmlRequest, HTTP.UTF_8));
6986
}
7087

7188
return httpPost;

0 commit comments

Comments
 (0)