package com.mcxiaoke.next.samples.http;
import android.os.Bundle;
import android.util.Log;
import android.widget.TextView;
import com.google.gson.reflect.TypeToken;
import com.mcxiaoke.next.http.HttpMethod;
import com.mcxiaoke.next.http.HttpQueue;
import com.mcxiaoke.next.http.NextRequest;
import com.mcxiaoke.next.http.callback.GsonCallback;
import com.mcxiaoke.next.http.callback.StringCallback;
import com.mcxiaoke.next.samples.BaseActivity;
import com.mcxiaoke.next.samples.BuildConfig;
import com.mcxiaoke.next.samples.R;
import com.mcxiaoke.next.samples.SampleUtils;
import org.json.JSONException;
import org.json.JSONObject;
import java.lang.reflect.Type;
import java.util.List;
/**
* User: mcxiaoke
* Date: 14-5-30
* Time: 17:19
*/
public class NextClientSamples extends BaseActivity {
public static final String TAG = NextClientSamples.class.getSimpleName();
private static final boolean DEBUG = true;
private HttpQueue mHttpQueue;
private TextView mLogView;
@Override
protected void onCreate(final Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.act_text);
mLogView = (TextView) findViewById(R.id.log_view);
mHttpQueue = new HttpQueue();
mHttpQueue.setDebug(true);
testPostForm();
testGet();
testGetList();
}
@Override
protected void onDestroy() {
super.onDestroy();
mHttpQueue.cancelAll(this);
}
private void testGet() {
final String url = "https://api.douban.com/v2/user/1000001";
final NextRequest request = new NextRequest(HttpMethod.GET, url)
.debug(true)
.query("platform", "Android")
.query("udid", "a0b609c99ca4bfdcef3d03a234d78d253d25e924")
.form("douban", "yes no")
.query("version", "6")
.form("form-key", "form-value")
.form("hello", "world")
.query("app_version", "1.5.2");
mHttpQueue.add(request, new GsonCallback<User>(User.class) {
@Override
public boolean handleException(final Throwable error) {
mLogView.append(TAG + " testGet http response error: " + error);
return true;
}
@Override
public void handleResponse(final User response) {
mLogView.append(TAG + " testGet http response content: "
+ response + "\n");
}
}, this);
}
private void testGetList() {
final String url = "https://api.douban.com/v2/lifestream/user_timeline/1000001";
final NextRequest request = new NextRequest(HttpMethod.GET, url)
.debug(true)
.query("platform", "Android")
.query("udid", "a0b609c99ca4bfdcef3d03a234d78d253d25e924")
.form("douban", "yes no")
.query("version", "6")
.form("form-key", "form-value")
.form("hello", "world")
.query("app_version", "1.5.2");
final Type type = new TypeToken<List<StatusItem>>() {
}.getType();
mHttpQueue.add(request, new GsonCallback<List<StatusItem>>(type) {
@Override
public boolean handleException(final Throwable error) {
mLogView.append(TAG + " testGetList http response error: " + error);
return true;
}
@Override
public void handleResponse(final List<StatusItem> response) {
mLogView.append(TAG + " testGetList http response content: "
+ response + "\n");
}
}, this);
}
private void testPostForm() {
final String url = "https://moment.douban.com/api/post/114309/like";
final NextRequest request = new NextRequest(HttpMethod.POST, url)
.debug(true)
.header("X-UDID", "a0b609c99ca4bfdcef3d03a234d78d253d25e924")
.query("platform", "Android")
.query("udid", "a0b609c99ca4bfdcef3d03a234d78d253d25e924")
.query("version", "6")
.form("form-key", "form value")
.form("hello", "world")
.query("app_version", "1.2.3");
mHttpQueue.add(request, new StringCallback() {
@Override
public boolean handleException(final Throwable error) {
mLogView.append(TAG + " testPostForm http response error: " + error);
return true;
}
@Override
public void handleResponse(final String response) {
mLogView.append(TAG + " testPostForm http response content: "
+ SampleUtils.prettyPrintJson(response) + "\n");
}
}, this);
}
private void testPostJson() throws JSONException {
final String url = "https://api.github.com/gists";
final NextRequest request = new NextRequest(HttpMethod.POST, url)
.debug(true)
.header("X-UDID", "a0b609c99ca4bfdcef3d03a234d78d253d25e924")
.query("platform", "Android")
.query("udid", "a0b609c99ca4bfdcef3d03a234d78d253d25e924")
.query("version", "6")
.form("form-key", "form value")
.form("hello", "world")
.query("app_version", "1.2.3");
request.userAgent("Samples test " + BuildConfig.APPLICATION_ID
+ "/" + BuildConfig.VERSION_NAME);
JSONObject file1 = new JSONObject();
file1.put("content", "gsgdsgsdgsdgsdgdsg gsdgjdslgk根深蒂固送到公司的");
JSONObject file2 = new JSONObject();
file2.put("content", "421414gsgdsgsdgsdgsdgdsg gsfdsfsddgjdslgk根深蒂固送到公司的");
JSONObject files = new JSONObject();
files.put("file1.txt", file1);
files.put("file2.md", file2);
JSONObject json = new JSONObject();
json.put("description", "this is a gist for http post test");
json.put("public", true);
json.put("files", files);
Log.v(TAG, "json string: " + json.toString());
request.body(json.toString().getBytes());
mHttpQueue.add(request, new StringCallback() {
@Override
public boolean handleException(final Throwable error) {
mLogView.append(TAG + " testPostJson http response error: " + error);
return true;
}
@Override
public void handleResponse(final String response) {
mLogView.append(TAG + " testPostJson http response content: "
+ SampleUtils.prettyPrintJson(response) + "\n");
}
}, this);
}
}