Skip to content

Commit 00501f5

Browse files
committed
Changes to sample, implemented JSON sample
1 parent 144c597 commit 00501f5

File tree

6 files changed

+159
-8
lines changed

6 files changed

+159
-8
lines changed

sample/build.gradle

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -26,5 +26,6 @@ android {
2626
}
2727

2828
dependencies {
29+
compile 'com.fasterxml.jackson.core:jackson-databind:2.2.3'
2930
compile project(':library')
3031
}

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

Lines changed: 20 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,17 @@
11
package com.loopj.android.http.sample;
22

3+
import com.loopj.android.http.AsyncHttpResponseHandler;
4+
35
public class GetSample extends SampleParentActivity {
46

7+
@Override
8+
protected void executeSample() {
9+
getAsyncHttpClient().get(this, getDefaultURL(), getResponseHandler());
10+
}
11+
512
@Override
613
protected int getSampleTitle() {
7-
return R.string.get_sample;
14+
return R.string.title_get_sample;
815
}
916

1017
@Override
@@ -16,4 +23,16 @@ protected boolean isRequestBodyAllowed() {
1623
protected boolean isRequestHeadersAllowed() {
1724
return true;
1825
}
26+
27+
@Override
28+
protected String getDefaultURL() {
29+
return "https://raw.github.com/loopj/android-async-http/master/README.md";
30+
}
31+
32+
@Override
33+
protected AsyncHttpResponseHandler getResponseHandler() {
34+
return new AsyncHttpResponseHandler() {
35+
36+
};
37+
}
1938
}
Lines changed: 66 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,71 @@
11
package com.loopj.android.http.sample;
22

3-
import android.app.Activity;
3+
import android.widget.Toast;
44

5-
public class JsonSample extends Activity {
5+
import com.fasterxml.jackson.core.JsonFactory;
6+
import com.fasterxml.jackson.databind.ObjectMapper;
7+
import com.loopj.android.http.AsyncHttpResponseHandler;
8+
import com.loopj.android.http.BaseJsonHttpResponseHandler;
9+
import com.loopj.android.http.sample.util.SampleJSON;
610

11+
import org.apache.http.Header;
12+
13+
public class JsonSample extends SampleParentActivity {
14+
15+
private static final String LOG_TAG = "JsonSample";
16+
17+
@Override
18+
protected void executeSample() {
19+
getAsyncHttpClient().get(this, getDefaultURL(), getResponseHandler());
20+
}
21+
22+
@Override
23+
protected int getSampleTitle() {
24+
return R.string.title_json_sample;
25+
}
26+
27+
@Override
28+
protected boolean isRequestBodyAllowed() {
29+
return false;
30+
}
31+
32+
@Override
33+
protected boolean isRequestHeadersAllowed() {
34+
return false;
35+
}
36+
37+
@Override
38+
protected String getDefaultURL() {
39+
return "http://www.jsonip.com/";
40+
}
41+
42+
@Override
43+
protected AsyncHttpResponseHandler getResponseHandler() {
44+
return new BaseJsonHttpResponseHandler<SampleJSON>() {
45+
46+
@Override
47+
public void onSuccess(int statusCode, Header[] headers, SampleJSON response) {
48+
debugHeaders(LOG_TAG, headers);
49+
debugStatusCode(LOG_TAG, statusCode);
50+
if (response != null) {
51+
Toast.makeText(JsonSample.this, response.getIp(), Toast.LENGTH_SHORT).show();
52+
}
53+
}
54+
55+
@Override
56+
public void onFailure(int statusCode, Header[] headers, Throwable e, SampleJSON errorResponse) {
57+
debugHeaders(LOG_TAG, headers);
58+
debugStatusCode(LOG_TAG, statusCode);
59+
debugThrowable(LOG_TAG, e);
60+
if (errorResponse != null) {
61+
Toast.makeText(JsonSample.this, errorResponse.getAbout(), Toast.LENGTH_SHORT).show();
62+
}
63+
}
64+
65+
@Override
66+
protected SampleJSON parseResponse(String responseBody) throws Throwable {
67+
return new ObjectMapper().readValues(new JsonFactory().createParser(responseBody), SampleJSON.class).next();
68+
}
69+
};
70+
}
771
}

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

Lines changed: 37 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@
33
import android.app.Activity;
44
import android.os.Bundle;
55
import android.text.InputType;
6+
import android.util.Log;
67
import android.view.View;
78
import android.view.ViewGroup;
89
import android.widget.Button;
@@ -11,6 +12,9 @@
1112
import android.widget.ScrollView;
1213

1314
import com.loopj.android.http.AsyncHttpClient;
15+
import com.loopj.android.http.AsyncHttpResponseHandler;
16+
17+
import org.apache.http.Header;
1418

1519
public abstract class SampleParentActivity extends Activity {
1620

@@ -50,6 +54,7 @@ private void setupHeaders() {
5054
urlLayout.setOrientation(LinearLayout.HORIZONTAL);
5155
urlEditText = new EditText(this);
5256
urlEditText.setHint("URL for request");
57+
urlEditText.setText(getDefaultURL());
5358
urlEditText.setInputType(InputType.TYPE_CLASS_TEXT | InputType.TYPE_TEXT_VARIATION_URI);
5459
urlEditText.setLayoutParams(new LinearLayout.LayoutParams(0, ViewGroup.LayoutParams.WRAP_CONTENT, 1f));
5560
urlLayout.addView(urlEditText);
@@ -58,11 +63,38 @@ private void setupHeaders() {
5863
executeButton.setLayoutParams(new LinearLayout.LayoutParams(ViewGroup.LayoutParams.WRAP_CONTENT, ViewGroup.LayoutParams.WRAP_CONTENT));
5964
urlLayout.addView(executeButton);
6065
headers.addView(urlLayout);
61-
if(isRequestHeadersAllowed()){
66+
if (isRequestHeadersAllowed()) {
6267
LinearLayout headersLayout = new LinearLayout(this);
6368
headersLayout.setOrientation(LinearLayout.VERTICAL);
6469
headersLayout.setLayoutParams(lParams);
6570
}
71+
executeButton.setOnClickListener(new View.OnClickListener() {
72+
@Override
73+
public void onClick(View v) {
74+
executeSample();
75+
}
76+
});
77+
}
78+
79+
protected abstract void executeSample();
80+
81+
protected final void debugHeaders(String TAG, Header[] headers) {
82+
if (headers != null) {
83+
Log.d(TAG, "Return Headers:");
84+
for (Header h : headers) {
85+
Log.d(TAG, String.format("%s : %s", h.getName(), h.getValue()));
86+
}
87+
}
88+
}
89+
90+
protected final void debugThrowable(String TAG, Throwable t) {
91+
if (t != null) {
92+
Log.e(TAG, "AsyncHttpClient returned error", t);
93+
}
94+
}
95+
96+
protected final void debugStatusCode(String TAG, int statusCode) {
97+
Log.d(TAG, String.format("Return Status Code: %d", statusCode));
6698
}
6799

68100
protected final void addView(View v) {
@@ -79,6 +111,10 @@ protected final void clearOutputs() {
79111

80112
protected abstract boolean isRequestHeadersAllowed();
81113

114+
protected abstract String getDefaultURL();
115+
116+
protected abstract AsyncHttpResponseHandler getResponseHandler();
117+
82118
protected AsyncHttpClient getAsyncHttpClient() {
83119
return this.asyncHttpClient;
84120
}
Lines changed: 33 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,37 @@
11
package com.loopj.android.http.sample.util;
22

3-
/**
4-
* Created by msebera on 10/20/13.
5-
*/
3+
import com.fasterxml.jackson.annotation.JsonIgnoreProperties;
4+
import com.fasterxml.jackson.annotation.JsonProperty;
5+
6+
@JsonIgnoreProperties(ignoreUnknown = true)
67
public class SampleJSON {
8+
9+
private String ip;
10+
private String about;
11+
@JsonProperty(value = "Pro!")
12+
private String promo;
13+
14+
public String getPromo() {
15+
return promo;
16+
}
17+
18+
public void setPromo(String promo) {
19+
this.promo = promo;
20+
}
21+
22+
public String getAbout() {
23+
return about;
24+
}
25+
26+
public void setAbout(String about) {
27+
this.about = about;
28+
}
29+
30+
public String getIp() {
31+
return ip;
32+
}
33+
34+
public void setIp(String ip) {
35+
this.ip = ip;
36+
}
737
}

sample/src/main/res/values/strings.xml

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@
22
<resources>
33

44
<string name="app_name">Android Async Http Sample</string>
5-
<string name="get_sample">GET Request Sample</string>
5+
<string name="title_get_sample">GET Sample</string>
6+
<string name="title_json_sample">JSON Sample</string>
67

78
</resources>

0 commit comments

Comments
 (0)