We needed this to get Ivy working with a client's extremely paranoid HTTP
proxy setup. It insisted on a specific User-Agent header, so we added
support for -Dhttp.agent (same as Ant).
--
Index: src/java/org/apache/ivy/util/url/AbstractURLHandler.java
===================================================================
--- src/java/org/apache/ivy/util/url/AbstractURLHandler.java (revision
1573075)
+++ src/java/org/apache/ivy/util/url/AbstractURLHandler.java (working
copy)
@@ -30,6 +30,7 @@
import java.util.zip.GZIPInputStream;
import java.util.zip.Inflater;
import java.util.zip.InflaterInputStream;
+import org.apache.ivy.Ivy;
public abstract class AbstractURLHandler implements URLHandler {
@@ -62,6 +63,14 @@
return getURLInfo(url, timeout).getLastModified();
}
+ protected String getUserAgent() {
+ String userAgent = System.getProperty("http.agent");
+ if (userAgent == null) {
+ userAgent = "Apache Ivy/" + Ivy.getIvyVersion();
+ }
+ return userAgent;
+ }
+
protected void validatePutStatusCode(URL dest, int statusCode, String
statusMessage)
throws IOException {
switch (statusCode) {
Index: src/java/org/apache/ivy/util/url/BasicURLHandler.java
===================================================================
--- src/java/org/apache/ivy/util/url/BasicURLHandler.java (revision
1573075)
+++ src/java/org/apache/ivy/util/url/BasicURLHandler.java (working copy)
@@ -64,7 +64,7 @@
try {
url = normalizeToURL(url);
con = url.openConnection();
- con.setRequestProperty("User-Agent", "Apache Ivy/" +
Ivy.getIvyVersion());
+ con.setRequestProperty("User-Agent", getUserAgent());
if (con instanceof HttpURLConnection) {
HttpURLConnection httpCon = (HttpURLConnection) con;
if (getRequestMethod() == URLHandler.REQUEST_METHOD_HEAD) {
@@ -159,7 +159,7 @@
try {
url = normalizeToURL(url);
conn = url.openConnection();
- conn.setRequestProperty("User-Agent", "Apache Ivy/" +
Ivy.getIvyVersion());
+ conn.setRequestProperty("User-Agent", getUserAgent());
conn.setRequestProperty("Accept-Encoding", "gzip,deflate");
if (conn instanceof HttpURLConnection) {
HttpURLConnection httpCon = (HttpURLConnection) conn;
@@ -193,7 +193,7 @@
try {
src = normalizeToURL(src);
srcConn = src.openConnection();
- srcConn.setRequestProperty("User-Agent", "Apache Ivy/" +
Ivy.getIvyVersion());
+ srcConn.setRequestProperty("User-Agent", getUserAgent());
srcConn.setRequestProperty("Accept-Encoding", "gzip,deflate");
if (srcConn instanceof HttpURLConnection) {
HttpURLConnection httpCon = (HttpURLConnection) srcConn;
@@ -244,7 +244,7 @@
conn = (HttpURLConnection) dest.openConnection();
conn.setDoOutput(true);
conn.setRequestMethod("PUT");
- conn.setRequestProperty("User-Agent", "Apache Ivy/" +
Ivy.getIvyVersion());
+ conn.setRequestProperty("User-Agent", getUserAgent());
conn.setRequestProperty("Content-type",
"application/octet-stream");
conn.setRequestProperty("Content-length",
Long.toString(source.length()));
conn.setInstanceFollowRedirects(true);
Index: src/java/org/apache/ivy/util/url/HttpClientHandler.java
===================================================================
--- src/java/org/apache/ivy/util/url/HttpClientHandler.java (revision
1573075)
+++ src/java/org/apache/ivy/util/url/HttpClientHandler.java (working
copy)
@@ -295,7 +295,7 @@
// user-agent
httpClient.getParams().setParameter(HttpMethodParams.USER_AGENT,
- "Apache Ivy/" + Ivy.getIvyVersion());
+ getUserAgent());
// authentication
httpClient.getParams().setParameter(CredentialsProvider.PROVIDER,
--
Tony Likhite