Here is an example of a REST + JSON service
package rainprod.utils.internetservice; import java.io.ByteArrayOutputStream; import java.io.DataInputStream; import java.io.IOException; import org.apache.http.HttpEntity; import org.apache.http.HttpResponse; import org.apache.http.client.ClientProtocolException; import org.apache.http.client.methods.HttpPost; import org.apache.http.entity.StringEntity; import org.apache.http.impl.client.DefaultHttpClient; import org.apache.http.message.BasicHeader; import org.apache.http.params.BasicHttpParams; import org.apache.http.params.HttpConnectionParams; import org.apache.http.params.HttpParams; import org.apache.http.protocol.HTTP; import org.json.JSONObject; import android.os.Handler; import android.os.Message; public abstract class InternetService extends Handler { public static final int CONNECTING = 1; public static final int UPLOADING = 2; public static final int DOWNLOADING = 3; public static final int COMPLETE = 4; public static final int ERROR = -1; private IInternetService listener; public InternetService(IInternetService listener) { this.listener = listener; } public DefaultHttpClient getDefaultClient() { HttpParams httpParams = new BasicHttpParams(); HttpConnectionParams.setConnectionTimeout(httpParams, 15000); HttpConnectionParams.setSoTimeout(httpParams, 15000); DefaultHttpClient httpClient = new DefaultHttpClient(httpParams); return httpClient; } public void postJson(JSONObject postObject, String functionName, int responseCode, int subResponseCode, boolean isThreadly) { DefaultHttpClient httpClient = this.getDefaultClient(); HttpPost postRequest = new HttpPost(this.getServiceURLString() + functionName); this.restApiPostRequest(httpClient, postRequest, postObject, responseCode, subResponseCode); } abstract public String getServiceURLString(); public void restApiPostRequest(final DefaultHttpClient httpclient, final HttpPost request, final JSONObject postObject, final int responseCode, final int subResponseCode) { new Thread(new Runnable() { @Override public void run() { try { try { StringEntity se = new StringEntity(postObject .toString(), HTTP.UTF_8); se.setContentType(new BasicHeader(HTTP.CONTENT_TYPE, "application/json")); request.setEntity(se); HttpResponse response = httpclient.execute(request); HttpEntity entity = response.getEntity(); if (entity != null) { ByteArrayOutputStream baos = new ByteArrayOutputStream(); DataInputStream dis = new DataInputStream(entity .getContent()); byte[] buffer = new byte[1024];
And a usage example for UserAPI
package ru.orionsource.missingcar.api; import rainprod.utils.internetservice.IInternetService; import rainprod.utils.internetservice.InternetService; import ru.orionsource.missingcar.classes.User; public class UserAPI extends InternetService { public UserAPI(IInternetService listener) { super(listener); } @Override public String getServiceURLString() { return "http://ugnali.orionsource.ru/u_api/?apiuser."; } public void userLogin(User user) { this.postJson(user.toJson(), "logonUser", 1, 0, true); } }
And the call from the source:
this.userAPI = new UserAPI(this); User selected = new User(); selected.email = this.accounts.get(arg2).name; this.userAPI.userLogin(selected);
source share