Skip to content

Commit 280bcd0

Browse files
committed
JSON Example with verbose logging and proper handler override
1 parent f63ca98 commit 280bcd0

File tree

3 files changed

+71
-17
lines changed

3 files changed

+71
-17
lines changed

sample/src/main/java/com/loopj/android/http/sample/GetSample.java

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,13 @@
11
package com.loopj.android.http.sample;
22

3+
import com.loopj.android.http.AsyncHttpClient;
34
import com.loopj.android.http.AsyncHttpResponseHandler;
45

56
public class GetSample extends SampleParentActivity {
67

78
@Override
8-
protected void executeSample() {
9-
getAsyncHttpClient().get(this, getDefaultURL(), getResponseHandler());
9+
protected void executeSample(AsyncHttpClient client, String URL, AsyncHttpResponseHandler responseHandler) {
10+
client.get(this, URL, responseHandler);
1011
}
1112

1213
@Override

sample/src/main/java/com/loopj/android/http/sample/JsonSample.java

Lines changed: 12 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,8 @@
11
package com.loopj.android.http.sample;
22

3-
import android.widget.Toast;
4-
53
import com.fasterxml.jackson.core.JsonFactory;
64
import com.fasterxml.jackson.databind.ObjectMapper;
5+
import com.loopj.android.http.AsyncHttpClient;
76
import com.loopj.android.http.AsyncHttpResponseHandler;
87
import com.loopj.android.http.BaseJsonHttpResponseHandler;
98
import com.loopj.android.http.sample.util.SampleJSON;
@@ -15,8 +14,8 @@ public class JsonSample extends SampleParentActivity {
1514
private static final String LOG_TAG = "JsonSample";
1615

1716
@Override
18-
protected void executeSample() {
19-
getAsyncHttpClient().get(this, getDefaultURL(), getResponseHandler());
17+
protected void executeSample(AsyncHttpClient client, String URL, AsyncHttpResponseHandler responseHandler) {
18+
client.get(this, URL, responseHandler);
2019
}
2120

2221
@Override
@@ -44,21 +43,26 @@ protected AsyncHttpResponseHandler getResponseHandler() {
4443
return new BaseJsonHttpResponseHandler<SampleJSON>() {
4544

4645
@Override
47-
public void onSuccess(int statusCode, Header[] headers, SampleJSON response) {
46+
public void onStart() {
47+
clearOutputs();
48+
}
49+
50+
@Override
51+
public void onSuccess(int statusCode, Header[] headers, String rawResponse, SampleJSON response) {
4852
debugHeaders(LOG_TAG, headers);
4953
debugStatusCode(LOG_TAG, statusCode);
5054
if (response != null) {
51-
Toast.makeText(JsonSample.this, response.getIp(), Toast.LENGTH_SHORT).show();
55+
debugResponse(LOG_TAG, rawResponse);
5256
}
5357
}
5458

5559
@Override
56-
public void onFailure(int statusCode, Header[] headers, Throwable e, SampleJSON errorResponse) {
60+
public void onFailure(int statusCode, Header[] headers, Throwable e, String rawResponse, SampleJSON errorResponse) {
5761
debugHeaders(LOG_TAG, headers);
5862
debugStatusCode(LOG_TAG, statusCode);
5963
debugThrowable(LOG_TAG, e);
6064
if (errorResponse != null) {
61-
Toast.makeText(JsonSample.this, errorResponse.getAbout(), Toast.LENGTH_SHORT).show();
65+
debugResponse(LOG_TAG, rawResponse);
6266
}
6367
}
6468

sample/src/main/java/com/loopj/android/http/sample/SampleParentActivity.java

Lines changed: 56 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
package com.loopj.android.http.sample;
22

33
import android.app.Activity;
4+
import android.graphics.Color;
45
import android.os.Bundle;
56
import android.text.InputType;
67
import android.util.Log;
@@ -10,21 +11,29 @@
1011
import android.widget.EditText;
1112
import android.widget.LinearLayout;
1213
import android.widget.ScrollView;
14+
import android.widget.TextView;
1315

1416
import com.loopj.android.http.AsyncHttpClient;
1517
import com.loopj.android.http.AsyncHttpResponseHandler;
1618

1719
import org.apache.http.Header;
1820

21+
import java.io.PrintWriter;
22+
import java.io.StringWriter;
23+
1924
public abstract class SampleParentActivity extends Activity {
2025

2126
private LinearLayout headers; // Sample header, inputs and buttons
2227
private LinearLayout contents; // Sample output, states, errors, ...
2328
private AsyncHttpClient asyncHttpClient = new AsyncHttpClient();
2429
private EditText urlEditText;
25-
private Button executeButton;
2630
private static final LinearLayout.LayoutParams lParams = new LinearLayout.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.WRAP_CONTENT);
2731

32+
private static final int LIGHTGREEN = Color.parseColor("#00FF66");
33+
private static final int LIGHTRED = Color.parseColor("#FF3300");
34+
private static final int YELLOW = Color.parseColor("#FFFF00");
35+
private static final int LIGHTBLUE = Color.parseColor("#99CCFF");
36+
2837
@Override
2938
protected void onCreate(Bundle savedInstanceState) {
3039
super.onCreate(savedInstanceState);
@@ -58,7 +67,7 @@ private void setupHeaders() {
5867
urlEditText.setInputType(InputType.TYPE_CLASS_TEXT | InputType.TYPE_TEXT_VARIATION_URI);
5968
urlEditText.setLayoutParams(new LinearLayout.LayoutParams(0, ViewGroup.LayoutParams.WRAP_CONTENT, 1f));
6069
urlLayout.addView(urlEditText);
61-
executeButton = new Button(this);
70+
Button executeButton = new Button(this);
6271
executeButton.setText("Run");
6372
executeButton.setLayoutParams(new LinearLayout.LayoutParams(ViewGroup.LayoutParams.WRAP_CONTENT, ViewGroup.LayoutParams.WRAP_CONTENT));
6473
urlLayout.addView(executeButton);
@@ -71,30 +80,68 @@ private void setupHeaders() {
7180
executeButton.setOnClickListener(new View.OnClickListener() {
7281
@Override
7382
public void onClick(View v) {
74-
executeSample();
83+
executeSample(getAsyncHttpClient(), (urlEditText == null || urlEditText.getText() == null) ? getDefaultURL() : urlEditText.getText().toString(), getResponseHandler());
7584
}
7685
});
7786
}
7887

79-
protected abstract void executeSample();
80-
8188
protected final void debugHeaders(String TAG, Header[] headers) {
8289
if (headers != null) {
8390
Log.d(TAG, "Return Headers:");
91+
StringBuilder builder = new StringBuilder();
8492
for (Header h : headers) {
85-
Log.d(TAG, String.format("%s : %s", h.getName(), h.getValue()));
93+
String _h = String.format("%s : %s", h.getName(), h.getValue());
94+
Log.d(TAG, _h);
95+
builder.append(_h);
96+
builder.append("\n");
8697
}
98+
addView(getColoredView(YELLOW, builder.toString()));
8799
}
88100
}
89101

102+
protected static String throwableToString(Throwable t) {
103+
if (t == null)
104+
return null;
105+
StringWriter sw = new StringWriter();
106+
PrintWriter pw = new PrintWriter(sw);
107+
t.printStackTrace(pw);
108+
return pw.toString();
109+
}
110+
90111
protected final void debugThrowable(String TAG, Throwable t) {
91112
if (t != null) {
92113
Log.e(TAG, "AsyncHttpClient returned error", t);
114+
addView(getColoredView(LIGHTRED, throwableToString(t)));
115+
}
116+
}
117+
118+
protected final void debugResponse(String TAG, String response) {
119+
if (response != null) {
120+
Log.d(TAG, "Response data:");
121+
Log.d(TAG, response);
122+
addView(getColoredView(LIGHTGREEN, response));
93123
}
94124
}
95125

96126
protected final void debugStatusCode(String TAG, int statusCode) {
97-
Log.d(TAG, String.format("Return Status Code: %d", statusCode));
127+
String msg = String.format("Return Status Code: %d", statusCode);
128+
Log.d(TAG, msg);
129+
addView(getColoredView(LIGHTBLUE, msg));
130+
}
131+
132+
public static int getContrastColor(int color) {
133+
double y = (299 * Color.red(color) + 587 * Color.green(color) + 114 * Color.blue(color)) / 1000;
134+
return y >= 128 ? Color.BLACK : Color.WHITE;
135+
}
136+
137+
private View getColoredView(int bgColor, String msg) {
138+
TextView tv = new TextView(this);
139+
tv.setLayoutParams(lParams);
140+
tv.setText(msg);
141+
tv.setBackgroundColor(bgColor);
142+
tv.setPadding(10, 10, 10, 10);
143+
tv.setTextColor(getContrastColor(bgColor));
144+
return tv;
98145
}
99146

100147
protected final void addView(View v) {
@@ -118,4 +165,6 @@ protected final void clearOutputs() {
118165
protected AsyncHttpClient getAsyncHttpClient() {
119166
return this.asyncHttpClient;
120167
}
168+
169+
protected abstract void executeSample(AsyncHttpClient client, String URL, AsyncHttpResponseHandler responseHandler);
121170
}

0 commit comments

Comments
 (0)