Dưới đây là mã của tôi để gọi các dịch vụ còn lại với Http POST và JSON:
(Lưu ý rằng tôi đang sử dụng AndroidHttpClient, đó là cơ bản một DefaultHttpClient với một số thuộc tính cài sẵn, và dự án GSON của Google cho JSON marshalling)
lớp để xử lý thông tin liên lạc:
public class NetworkComm extends AsyncTask<String, Integer, String> {
// Log tag
private static final String TAG = "NetworkComm";
private AndroidHttpClient hc;
private HttpContext localContext;
private TaskResponseListener listener;
private int reqType;
private String message;
private String url;
private Object extra;
public NetworkComm(AndroidHttpClient hc, HttpContext localContext, TaskResponseListener listener,
int reqType, String message, String url, Object extra){
super();
this.hc = hc;
this.localContext = localContext;
this.listener = listener;
this.reqType = reqType;
this.message = message;
this.url = url;
this.extra = extra;
}
public AndroidHttpClient getHc() {
return hc;
}
public void setHc(AndroidHttpClient hc) {
this.hc = hc;
}
public HttpContext getLocalContext() {
return localContext;
}
public void setLocalContext(HttpContext localContext) {
this.localContext = localContext;
}
public void start(){
this.execute(message);
}
protected void onPreExecute() {
//Don't do anything here
}
protected String doInBackground(String... req) {
Log.d(TAG, "Message to send: "+req[0]);
HttpPost p = new HttpPost(url);
try{
p.setEntity(new StringEntity(req[0], "UTF8"));
}catch(Exception e){
e.printStackTrace();
}
p.setHeader("Content-type", "application/json");
String response = "";
try{
HttpResponse resp = hc.execute(p, localContext);
InputStream is = resp.getEntity().getContent();
response = convertStreamToString(is);
Log.d("Response", "Response is " + response);
Log.d("Status line", ""+resp.getStatusLine().getStatusCode());
} catch (Exception e){
e.printStackTrace();
}
return response;
}
protected void onProgressUpdate(Integer... progress) {
// dont handle this yet
}
@Override
protected void onCancelled() {
super.onCancelled();
}
protected void onPostExecute(String result) {
Log.d("task", "task finished");
listener.onTaskResponse(reqType, result, extra);
}
public interface TaskResponseListener{
public void onTaskResponse(int type, String response, Object extra);
}
private String convertStreamToString(InputStream is) throws IOException {
if (is != null) {
Writer writer = new StringWriter();
char[] buffer = new char[1024];
try {
Reader reader = new BufferedReader(
new InputStreamReader(is, "UTF-8"));
int n;
while ((n = reader.read(buffer)) != -1) {
writer.write(buffer, 0, n);
}
} finally {
is.close();
}
return writer.toString();
} else {
return "";
}
}
}
Cách sử dụng:
Gson g = new Gson();
SomeContent content = new SomeContent("Stuff", 4);
String message = g.toJson(content);
NetworkComm task = new NetworkComm(hc, localContext, listener, 0, message, url, "");
task.start();
Hy vọng rằng điều này sẽ giúp.
là mô hình dữ liệu json của bạn là giống như yêu cầu dịch vụ? –