package cn.edu.zafu.jwc.util; import java.io.UnsupportedEncodingException; import org.apache.http.Header; import android.app.ProgressDialog; import android.content.Context; import android.widget.Toast; import cn.edu.zafu.jwc.service.LinkService; import com.loopj.android.http.AsyncHttpClient; import com.loopj.android.http.AsyncHttpResponseHandler; import com.loopj.android.http.BinaryHttpResponseHandler; import com.loopj.android.http.JsonHttpResponseHandler; import com.loopj.android.http.RequestParams; /** * Http请求工具类 * @author lizhangqu * @date 2015-2-1 */ /** * @author Administrator * */ public class HttpUtil { private static AsyncHttpClient client = new AsyncHttpClient(); // 实例话对象 // Host地址 public static final String HOST = "202.107.200.222:8080"; // 基础地址 public static final String URL_BASE = "http://202.107.200.222:8080/"; // 验证码地址 public static final String URL_CODE = "http://202.107.200.222:8080/CheckCode.aspx"; // 登陆地址 public static final String URL_LOGIN = "http://202.107.200.222:8080/default2.aspx"; // 登录成功的首页 public static String URL_MAIN = "http://202.107.200.222:8080/xs_main.aspx?xh=XH"; // 请求地址 public static String URL_QUERY = "http://202.107.200.222:8080/QUERY"; /** * 请求参数 */ public static String Button1 = ""; public static String hidPdrs = ""; public static String hidsc = ""; public static String lbLanguage = ""; public static String RadioButtonList1 = "学生"; public static String __VIEWSTATE = "dDwyODE2NTM0OTg7Oz7YiHv1mHkLj1OkgkF90IvNTvBrLQ=="; public static String TextBox2 = null; public static String txtSecretCode = null; public static String txtUserName = null; // 静态初始化 static { client.setTimeout(10000); // 设置链接超时,如果不设置,默认为10s // 设置请求头 client.addHeader("Host", HOST); client.addHeader("Referer", URL_LOGIN); client.addHeader("User-Agent", "Mozilla/5.0 (Windows NT 6.1; WOW64; Trident/7.0; rv:11.0) like Gecko"); } /** * get,用一个完整url获取一个string对象 * * @param urlString * @param res */ public static void get(String urlString, AsyncHttpResponseHandler res) { client.get(urlString, res); } /** * get,url里面带参数 * * @param urlString * @param params * @param res */ public static void get(String urlString, RequestParams params, AsyncHttpResponseHandler res) { client.get(urlString, params, res); } /** * get,不带参数,获取json对象或者数组 * * @param urlString * @param res */ public static void get(String urlString, JsonHttpResponseHandler res) { client.get(urlString, res); } /** * get,带参数,获取json对象或者数组 * * @param urlString * @param params * @param res */ public static void get(String urlString, RequestParams params, JsonHttpResponseHandler res) { client.get(urlString, params, res); } /** * get,下载数据使用,会返回byte数据 * * @param uString * @param bHandler */ public static void get(String uString, BinaryHttpResponseHandler bHandler) { client.get(uString, bHandler); } /** * post,不带参数 * * @param urlString * @param res */ public static void post(String urlString, AsyncHttpResponseHandler res) { client.post(urlString, res); } /** * post,带参数 * * @param urlString * @param params * @param res */ public static void post(String urlString, RequestParams params, AsyncHttpResponseHandler res) { client.post(urlString, params, res); } /** * post,不带参数,获取json对象或者数组 * * @param urlString * @param res */ public static void post(String urlString, JsonHttpResponseHandler res) { client.post(urlString, res); } /** * post,带参数,获取json对象或者数组 * * @param urlString * @param params * @param res */ public static void post(String urlString, RequestParams params, JsonHttpResponseHandler res) { client.post(urlString, params, res); } /** * post,返回二进制数据时使用,会返回byte数据 * * @param uString * @param bHandler */ public static void post(String uString, BinaryHttpResponseHandler bHandler) { client.post(uString, bHandler); } /** * 返回请求客户端 * * @return */ public static AsyncHttpClient getClient() { return client; } /** * 获得登录时所需的请求参数 * * @return */ public static RequestParams getLoginRequestParams() { // 设置请求参数 RequestParams params = new RequestParams(); params.add("__VIEWSTATE", __VIEWSTATE); params.add("Button1", Button1); params.add("hidPdrs", hidPdrs); params.add("hidsc", hidsc); params.add("lbLanguage", lbLanguage); params.add("RadioButtonList1", RadioButtonList1); params.add("TextBox2", TextBox2); params.add("txtSecretCode", txtSecretCode); params.add("txtUserName", txtUserName); return params; } public interface QueryCallback { public String handleResult(String result); } public static void getQuery(final Context context,LinkService linkService,final String urlName,final QueryCallback callback) { final ProgressDialog dialog = CommonUtil.getProcessDialog( context, "正在获取"+urlName); dialog.show(); String link = linkService.getLinkByName(urlName); if (link != null) { HttpUtil.URL_QUERY = HttpUtil.URL_QUERY.replace("QUERY", link); } else { Toast.makeText(context, "链接出现错误", Toast.LENGTH_SHORT).show(); return; } HttpUtil.getClient().addHeader("Referer", HttpUtil.URL_MAIN); HttpUtil.getClient().setURLEncodingEnabled(true); HttpUtil.get(HttpUtil.URL_QUERY, new AsyncHttpResponseHandler() { @Override public void onSuccess(int arg0, Header[] arg1, byte[] arg2) { String resultContent=null; try { resultContent = new String(arg2, "gb2312"); if(callback!=null){ callback.handleResult(resultContent); } Toast.makeText(context, urlName+"获取成功!!!",Toast.LENGTH_LONG).show(); } catch (UnsupportedEncodingException e) { e.printStackTrace(); } finally { dialog.dismiss(); } } @Override public void onFailure(int arg0, Header[] arg1, byte[] arg2, Throwable arg3) { dialog.dismiss(); Toast.makeText(context, urlName+"获取失败!!!", Toast.LENGTH_SHORT).show(); } }); } }