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:
parent
37e6d0c949
commit
2e4ee5b59f
@ -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();
|
||||||
|
@ -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");
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user