1
0
mirror of https://github.com/moparisthebest/k-9 synced 2025-02-17 07:30:16 -05:00

Fix for sending mail; additional logging when there is an invalid (non-http-2xx) response.

This commit is contained in:
Bradley Young 2009-01-06 01:31:57 +00:00
parent 37e6d0c949
commit 2e4ee5b59f
2 changed files with 48 additions and 54 deletions

View File

@ -403,6 +403,31 @@ public class WebDavStore extends Store {
return status; return status;
} }
public static String getHttpRequestResponse(HttpEntity request, HttpEntity response) throws IllegalStateException, IOException{
String responseText = "";
String requestText = "";
if (response != null) {
BufferedReader reader = new BufferedReader(new InputStreamReader(response.getContent()), 8192);
String tempText = "";
while ((tempText = reader.readLine()) != null) {
responseText += tempText;
}
}
if (request != null) {
BufferedReader reader = new BufferedReader(new InputStreamReader(request.getContent()), 8192);
String tempText = "";
while ((tempText = reader.readLine()) != null) {
requestText += tempText;
}
requestText = requestText.replaceAll("password=.*?&", "password=(omitted)&");
}
return "Request: " + requestText +
"\n\nResponse: " + responseText;
}
/** /**
* Performs the Form Based Authentication * Performs the Form Based Authentication
* Returns the CookieStore object for later use or null * Returns the CookieStore object for later use or null
@ -450,33 +475,11 @@ public class WebDavStore extends Store {
int status_code = response.getStatusLine().getStatusCode(); int status_code = response.getStatusLine().getStatusCode();
/** Verify success */ /** Verify success */
if (status_code < 500 &&
status_code >= 400) {
String errorText = "";
String requestText = "";
if (entity != null) {
BufferedReader reader = new BufferedReader(new InputStreamReader(entity.getContent()), 8192);
String tempText = "";
while ((tempText = reader.readLine()) != null) {
errorText += tempText;
}
}
BufferedReader reader = new BufferedReader(new InputStreamReader(formEntity.getContent()), 8192);
String tempText = "";
while ((tempText = reader.readLine()) != null) {
requestText += tempText;
}
requestText = requestText.replaceAll("password=.*?&", "password=(omitted)&");
throw new MessagingException("Error during authentication: "+
response.getStatusLine().toString()+ "\n\nRequest: "+
requestText + "\n\nResponse: " +
errorText);
}
if (status_code > 300 || if (status_code > 300 ||
status_code < 200) { status_code < 200) {
throw new IOException("Error during authentication: "+status_code); throw new MessagingException("Error during authentication: "+
response.getStatusLine().toString()+ "\n\n"+
getHttpRequestResponse(formEntity, entity));
} }
cookies = httpclient.getCookieStore(); cookies = httpclient.getCookieStore();
@ -588,7 +591,7 @@ public class WebDavStore extends Store {
httpclient.setCookieStore(this.mAuthCookies); httpclient.setCookieStore(this.mAuthCookies);
try { try {
int statusCode = -1; int statusCode = -1;
StringEntity messageEntity; StringEntity messageEntity = null;
HttpGeneric httpmethod = new HttpGeneric(url); HttpGeneric httpmethod = new HttpGeneric(url);
HttpResponse response; HttpResponse response;
HttpEntity entity; HttpEntity entity;
@ -610,25 +613,11 @@ public class WebDavStore extends Store {
entity = response.getEntity(); entity = response.getEntity();
if (statusCode < 500 &&
statusCode >= 400) {
String errorText = "";
if (entity != null) {
BufferedReader reader = new BufferedReader(new InputStreamReader(entity.getContent()), 8192);
String tempText = "";
while ((tempText = reader.readLine()) != null) {
errorText += tempText;
}
}
throw new IOException("Error during authentication: "+
response.getStatusLine().toString()+ "\n\nRequest: "+
messageBody + "\n\nResponse: " +
errorText);
}
if (statusCode < 200 || if (statusCode < 200 ||
statusCode > 300) { statusCode > 300) {
throw new IOException("Error processing request, returned HTTP Response Code was " + statusCode); throw new IOException("Error during request processing: "+
response.getStatusLine().toString()+ "\n\n"+
getHttpRequestResponse(messageEntity, entity));
} }
if (entity != null && if (entity != null &&
@ -1053,13 +1042,15 @@ public class WebDavStore extends Store {
statusCode = response.getStatusLine().getStatusCode(); statusCode = response.getStatusLine().getStatusCode();
entity = response.getEntity();
if (statusCode < 200 || if (statusCode < 200 ||
statusCode > 300) { statusCode > 300) {
throw new IOException("Status Code in invalid range, URL: "+wdMessage.getUrl()); throw new IOException("Error during fetch: "+
response.getStatusLine().toString()+ "\n\n"+
getHttpRequestResponse(null, entity));
} }
entity = response.getEntity();
if (entity != null) { if (entity != null) {
InputStream istream = null; InputStream istream = null;
StringBuffer buffer = new StringBuffer(); StringBuffer buffer = new StringBuffer();

View File

@ -111,10 +111,10 @@ public class WebDavTransport extends Transport {
public String generateTempURI(String subject) { public String generateTempURI(String subject) {
String encodedSubject = URLEncoder.encode(subject); String encodedSubject = URLEncoder.encode(subject);
return store.getUrl() + "/Exchange/" + store.getAlias() + "/drafts/" + encodedSubject + ".eml"; return store.getUrl() + "/drafts/" + encodedSubject + ".eml";
} }
public String generateSendURI() { public String generateSendURI() {
return store.getUrl() + "/Exchange/" + store.getAlias() + "/##DavMailSubmissionURI##/"; return store.getUrl() + "/##DavMailSubmissionURI##/";
} }
public void sendMessage(Message message) throws MessagingException { public void sendMessage(Message message) throws MessagingException {
@ -132,7 +132,6 @@ public class WebDavTransport extends Transport {
} }
HttpGeneric httpmethod; HttpGeneric httpmethod;
HttpResponse response; HttpResponse response;
HttpEntity responseEntity;
StringEntity bodyEntity; StringEntity bodyEntity;
int statusCode; int statusCode;
String subject; String subject;
@ -168,7 +167,9 @@ public class WebDavTransport extends Transport {
if (statusCode < 200 || if (statusCode < 200 ||
statusCode > 300) { statusCode > 300) {
throw new IOException("Error sending message, status code was " + statusCode); throw new IOException("Sending Message: Error while trying to upload to drafts folder: "+
response.getStatusLine().toString()+ "\n\n"+
WebDavStore.getHttpRequestResponse(bodyEntity, response.getEntity()));
} }
httpmethod = store.new HttpGeneric(generateTempURI(subject)); httpmethod = store.new HttpGeneric(generateTempURI(subject));
@ -180,14 +181,16 @@ public class WebDavTransport extends Transport {
if (statusCode < 200 || if (statusCode < 200 ||
statusCode > 300) { statusCode > 300) {
throw new IOException("Error sending message, status code was " + statusCode); throw new IOException("Sending Message: Error while trying to move finished draft to Outbox: "+
response.getStatusLine().toString()+ "\n\n"+
WebDavStore.getHttpRequestResponse(null, response.getEntity()));
} }
} catch (UnsupportedEncodingException uee) { } catch (UnsupportedEncodingException uee) {
Log.e(Email.LOG_TAG, "UnsupportedEncodingException in getMessageCount() " + uee); Log.e(Email.LOG_TAG, "UnsupportedEncodingException in sendMessage() " + uee);
} catch (IOException ioe) { } catch (IOException ioe) {
Log.e(Email.LOG_TAG, "IOException in getMessageCount() " + ioe); Log.e(Email.LOG_TAG, "IOException in sendMessage() " + ioe);
throw new MessagingException("Unable to send message", ioe); throw new MessagingException("Unable to send message"+ioe.getMessage(), ioe);
} }
Log.d(Email.LOG_TAG, ">>> getMessageCount finished"); Log.d(Email.LOG_TAG, ">>> getMessageCount finished");
} }