From 39d4bafb912f4844bf022585f5302d1fbbb7731f Mon Sep 17 00:00:00 2001 From: mguessan Date: Sun, 30 Nov 2008 18:05:36 +0000 Subject: [PATCH] Force internet explorer header to get XML responses git-svn-id: http://svn.code.sf.net/p/davmail/code/trunk@184 3d1905a2-6b24-0410-a738-b14d5a86fcbd --- src/java/davmail/DavGateway.java | 2 +- .../davmail/exchange/ExchangeSession.java | 23 +++++-------------- .../exchange/ExchangeSessionFactory.java | 5 +--- .../http/DavGatewayHttpClientFacade.java | 6 +++++ 4 files changed, 14 insertions(+), 22 deletions(-) diff --git a/src/java/davmail/DavGateway.java b/src/java/davmail/DavGateway.java index 34b602f8..35c8b9f4 100644 --- a/src/java/davmail/DavGateway.java +++ b/src/java/davmail/DavGateway.java @@ -119,9 +119,9 @@ public class DavGateway { public static String getReleasedVersion() { String version = null; BufferedReader versionReader = null; + HttpClient httpClient = DavGatewayHttpClientFacade.getInstance(); GetMethod getMethod = new GetMethod("http://davmail.sourceforge.net/version.txt"); try { - HttpClient httpClient = DavGatewayHttpClientFacade.getInstance(); httpClient.setConnectionTimeout(250); int status = httpClient.executeMethod(getMethod); if (status == HttpStatus.SC_OK) { diff --git a/src/java/davmail/exchange/ExchangeSession.java b/src/java/davmail/exchange/ExchangeSession.java index c62d7872..768594de 100644 --- a/src/java/davmail/exchange/ExchangeSession.java +++ b/src/java/davmail/exchange/ExchangeSession.java @@ -1,16 +1,9 @@ package davmail.exchange; import davmail.Settings; -import davmail.tray.DavGatewayTray; import davmail.http.DavGatewayHttpClientFacade; -import org.apache.commons.httpclient.Header; -import org.apache.commons.httpclient.HttpClient; -import org.apache.commons.httpclient.HttpException; -import org.apache.commons.httpclient.HttpMethod; -import org.apache.commons.httpclient.HttpStatus; -import org.apache.commons.httpclient.HttpURL; -import org.apache.commons.httpclient.HttpsURL; -import org.apache.commons.httpclient.URIException; +import davmail.tray.DavGatewayTray; +import org.apache.commons.httpclient.*; import org.apache.commons.httpclient.methods.GetMethod; import org.apache.commons.httpclient.methods.PostMethod; import org.apache.commons.httpclient.methods.PutMethod; @@ -20,13 +13,12 @@ import org.apache.webdav.lib.Property; import org.apache.webdav.lib.ResponseEntity; import org.apache.webdav.lib.WebdavResource; import org.apache.webdav.lib.methods.SearchMethod; -import org.apache.webdav.lib.methods.PropFindMethod; import javax.mail.internet.MimeUtility; -import javax.xml.stream.XMLStreamReader; import javax.xml.stream.XMLInputFactory; -import javax.xml.stream.XMLStreamException; import javax.xml.stream.XMLStreamConstants; +import javax.xml.stream.XMLStreamException; +import javax.xml.stream.XMLStreamReader; import java.io.*; import java.net.HttpURLConnection; import java.net.URL; @@ -694,8 +686,8 @@ public class ExchangeSession { inHTML = false; } if (inHTML) { - // line = line.replaceAll("’", "'"); - // line = line.replaceAll("…", "..."); + // line = line.replaceAll("’", "'"); + // line = line.replaceAll("…", "..."); } isoWriter.write(line); isoWriter.write((char) 13); @@ -973,8 +965,6 @@ public class ExchangeSession { public String getEmail() throws IOException { String email = null; GetMethod getMethod = new GetMethod("/public/?Cmd=galfind&AN=" + getUserName()); - // force XML response with Internet Explorer header - getMethod.setRequestHeader("User-Agent", "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; .NET CLR 1.1.4322)"); XMLStreamReader reader = null; try { int status = wdr.retrieveSessionInstance().executeMethod(getMethod); @@ -1057,7 +1047,6 @@ public class ExchangeSession { } GetMethod getMethod = new GetMethod(url); - getMethod.setRequestHeader("User-Agent", "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; .NET CLR 1.1.4322)"); getMethod.setRequestHeader("Content-Type", "text/xml"); try { diff --git a/src/java/davmail/exchange/ExchangeSessionFactory.java b/src/java/davmail/exchange/ExchangeSessionFactory.java index a3904049..178d72d9 100644 --- a/src/java/davmail/exchange/ExchangeSessionFactory.java +++ b/src/java/davmail/exchange/ExchangeSessionFactory.java @@ -42,12 +42,9 @@ public class ExchangeSessionFactory { public static void checkConfig() throws IOException { String url = Settings.getProperty("davmail.url"); + HttpClient httpClient = DavGatewayHttpClientFacade.getInstance(); HttpMethod testMethod = new GetMethod(url); try { - - // create an HttpClient instance - HttpClient httpClient = DavGatewayHttpClientFacade.getInstance(); - // get webmail root url (will not follow redirects) testMethod.setFollowRedirects(false); testMethod.setDoAuthentication(false); diff --git a/src/java/davmail/http/DavGatewayHttpClientFacade.java b/src/java/davmail/http/DavGatewayHttpClientFacade.java index 7d433956..af523dee 100644 --- a/src/java/davmail/http/DavGatewayHttpClientFacade.java +++ b/src/java/davmail/http/DavGatewayHttpClientFacade.java @@ -16,6 +16,11 @@ import java.io.IOException; * Create HttpClient instance according to DavGateway Settings */ public class DavGatewayHttpClientFacade { + static { + // force XML response with Internet Explorer header + System.getProperties().setProperty("httpclient.useragent", "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; .NET CLR 1.1.4322)"); + } + /** * Create a configured HttpClient instance. * @@ -34,6 +39,7 @@ public class DavGatewayHttpClientFacade { * @param httpClient current Http client */ public static void configureClient(HttpClient httpClient) { + // do not send basic auth automatically httpClient.getState().setAuthenticationPreemptive(false);