Skip to content

Commit

Permalink
Read server response body string
Browse files Browse the repository at this point in the history
  • Loading branch information
gotev committed Jan 28, 2015
1 parent e98cd72 commit 140bef1
Show file tree
Hide file tree
Showing 2 changed files with 33 additions and 2 deletions.
2 changes: 1 addition & 1 deletion project.properties
Original file line number Diff line number Diff line change
Expand Up @@ -11,5 +11,5 @@
#proguard.config=${sdk.dir}/tools/proguard/proguard-android.txt:proguard-project.txt

# Project target.
target=android-20
target=android-21
android.library=true
33 changes: 32 additions & 1 deletion src/com/alexbbb/uploadservice/UploadService.java
Original file line number Diff line number Diff line change
@@ -1,8 +1,10 @@
package com.alexbbb.uploadservice;

import java.io.BufferedReader;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.OutputStream;
import java.io.UnsupportedEncodingException;
import java.net.HttpURLConnection;
Expand Down Expand Up @@ -154,6 +156,7 @@ private void handleFileUpload(final String uploadId, final String url, final Str

HttpURLConnection conn = null;
OutputStream requestStream = null;
InputStream responseStream = null;

try {
conn = getMultipartHttpURLConnection(url, method, boundary);
Expand All @@ -168,16 +171,44 @@ private void handleFileUpload(final String uploadId, final String url, final Str
final byte[] trailer = getTrailerBytes(boundary);
requestStream.write(trailer, 0, trailer.length);
final int serverResponseCode = conn.getResponseCode();
final String serverResponseMessage = conn.getResponseMessage();

if (serverResponseCode / 100 == 2) {
responseStream = conn.getInputStream();
} else { // getErrorStream if the response code is not 2xx
responseStream = conn.getErrorStream();
}
final String serverResponseMessage = getResponseBodyAsString(responseStream);

broadcastCompleted(uploadId, serverResponseCode, serverResponseMessage);

} finally {
closeOutputStream(requestStream);
closeInputStream(responseStream);
closeConnection(conn);
}
}

private String getResponseBodyAsString(final InputStream inputStream) {
StringBuilder outString = new StringBuilder();

BufferedReader reader = null;
try {
reader = new BufferedReader(new InputStreamReader(inputStream));
String line;
while ((line = reader.readLine()) != null) {
outString.append(line);
}
} catch (Exception exc) {
try {
if (reader != null)
reader.close();
} catch (Exception readerExc) {
}
}

return outString.toString();
}

private String getBoundary() {
final StringBuilder builder = new StringBuilder();

Expand Down

0 comments on commit 140bef1

Please sign in to comment.