BaseParser.java 1.6 KB
/** 
 * HaoJiXing Teacher Q&A
 * copyright(C)2013- Acorn International
 *
 * packeage:com.ozing.callteacher.parser.BaseParser.java 
 * create:2013年7月25日下午1:58:14 
 */
package com.hjx.personalcenter.parser;

import android.text.TextUtils;

import com.hjx.personalcenter.exception.RemoteException;
import com.hjx.personalcenter.exception.ResponseError;

import org.json.JSONException;
import org.json.JSONObject;

/**
 * @author jixiaolong<jixiaolong@chinadrtv.com>
 * @code: 015261
 */
public abstract class BaseParser<T> {
	public abstract T parse(String response) throws RemoteException, com.hjx.personalcenter.exception.RemoteException;

	public static ResponseError getError(String response){
		ResponseError error = new ResponseError();
		if(TextUtils.isEmpty(response)){
			error.setStatus(-1);
			error.setMessage("接口空数据");
		}else{
			if(response.contains("status")){
				//{"status":100,"message":"success","access_token":"0b129fa4-cd71-4777-89d0-215bf4652146"}
				//{"status":204,"message":"wrong password"}
				//{"status":200,"message":"user not exist"}	
				try {
					JSONObject object = new JSONObject(response);
					int status = object.optInt("status");
					error.setStatus(status);
					if(status!=0 && status!=100){
						String msg = object.optString("message");
						if(!TextUtils.isEmpty(msg))
							error.setMessage(msg);
					}
				} catch (JSONException e) {
					error.setMessage("返回json数据错误:["+response+"]");
				}
			}else if(response.contains("error")){
				error.setMessage("服务器内部错误");
			}else{
				error.setStatus(100);
			}		
		}
		return error;
	}
}