android stuidio下的org.apache.http.client.HttpClient的get和post访问

public class HttpRequest {
	/**
     * Default connection timeout 默认连接超时时间
     */
    private static final int M_CONNECTION_TIMEOUT = 5 * 1000;
    /**
     * Default socket timeout 默认套接字超市时间
     */
    private static final int M_SO_TIMEOUT = 100 * 1000;

	/**
     * 获取ResponseResult
     *
     * @param is
     * @param handler
     * @return
     */
    private static ResponseResult parseResponseResult(InputStream is, Handler handler) {
        ResponseResult responseResult = null;
        try {
            if (is != null) {
                StringBuffer sb = new StringBuffer();
                BufferedReader reader = new BufferedReader(new InputStreamReader(is));
                for (String str = reader.readLine(); str != null; str = reader.readLine()) {
                    sb.append(str);
                }
                responseResult = new Gson().fromJson(sb.toString(), ResponseResult.class);
            }
        } catch (Exception e) {
            e.printStackTrace();
            Message message = Message.obtain();
            message.obj = "数据解析异常";
            message.what = 0;
            handler.sendMessage(message);
            Log2FileUtil.saveLog2File(e);
        } finally {
            return responseResult;
        }
    }

	/**
     * Post获取InputStream
     *
     * @param context
     * @param url
     * @param params
     * @param handler
     * @return
     */
    private static InputStream postRestHandler(Context context, String url, Object params, Handler handler) {
        try {
            //创建一个Http客户端
            HttpClient client = new DefaultHttpClient();
            client.getParams().setParameter(CoreConnectionPNames.CONNECTION_TIMEOUT, M_CONNECTION_TIMEOUT);
            client.getParams().setParameter(CoreConnectionPNames.SO_TIMEOUT, M_SO_TIMEOUT);
            //创建一个Post请求
            HttpPost httpPost = new HttpPost(url);
            HttpEntity entity = new StringEntity(JsonUtil.toJSONString(params), "UTF-8");
            httpPost.setEntity(entity);
            //向服务器发送请求并获取服务器返回结果
            //token后续要根据参数获取
            httpPost.setHeader("Content-Type", "application/json");
            HttpResponse response = client.execute(httpPost);
            //无数据
            if (response == null) {
                if (handler != null) {
                    Message message = Message.obtain();
                    message.obj = "网络未连通,请稍后再试!\n如连续失败多次,请检查网络是否正常,可尝试关闭Wi-Fi后重新连接!";
                    message.what = 0;
                    handler.sendMessage(message);
                }
                return null;
            }
            //有数据
            int statusCode = response.getStatusLine().getStatusCode();
            //状态码200
            if (statusCode == HttpStatus.SC_OK) {
                //返回结果
                InputStream inputStream = response.getEntity().getContent();
                return inputStream;
            }
            //非状态码200
            if (handler != null) {
                Message message = Message.obtain();
                message.obj = "HTTP Status Code:" + statusCode;
                message.what = StatusEnum.HTTP_ERROR.getCode();
                handler.sendMessage(message);
            }
        } catch (Exception e) {
            e.printStackTrace();
            Log2FileUtil.saveLog2File(e);
            if (handler != null) {
                Message message = Message.obtain();
                message.obj = "服务器无响应!";
                message.what = StatusEnum.HTTP_ERROR.getCode();
                //检查是否因网络或服务异常
                if (!NetworkUtil.isAllNetworkAvailable(context)) {
                    message.obj = "网络异常,请检查网络设置!";
                }
                handler.sendMessage(message);
            }
        }
        return null;
    }
	/**
     * Get获取InputStream
     *
     * @param context
     * @param url
     * @param params
     * @param handler
     * @return
     */
    private static InputStream getRestHandler(Context context, String url, Object params, Handler handler) {
        try {
            //创建一个Http客户端
            HttpClient client = new DefaultHttpClient();
            client.getParams().setParameter(CoreConnectionPNames.CONNECTION_TIMEOUT, M_CONNECTION_TIMEOUT);
            client.getParams().setParameter(CoreConnectionPNames.SO_TIMEOUT, M_SO_TIMEOUT);
            //创建一个Get请求
            HttpGetWithEntity httpGet = new HttpGetWithEntity(url);
            HttpEntity entity = new StringEntity(JsonUtil.toJSONString(params), "UTF-8");
            httpGet.setEntity(entity);
            //向服务器发送请求并获取服务器返回结果
            //token后续要根据参数获取
            httpGet.setHeader("Content-Type", "application/json");
            HttpResponse response = client.execute(httpGet);
            //无数据
            if (response == null) {
                if (handler != null) {
                    Message message = Message.obtain();
                    message.obj = "网络未连通,请稍后再试!\n如连续失败多次,请检查网络是否正常,可尝试关闭Wi-Fi后重新连接!";
                    message.what = 0;
                    handler.sendMessage(message);
                }
                return null;
            }
            //有数据
            int statusCode = response.getStatusLine().getStatusCode();
            //状态码200
            if (statusCode == HttpStatus.SC_OK) {
                //返回结果
                InputStream inputStream = response.getEntity().getContent();
                return inputStream;
            }
            //非状态码200
            if (handler != null) {
                Message message = Message.obtain();
                message.obj = "HTTP Status Code:" + statusCode;
                message.what = StatusEnum.HTTP_ERROR.getCode();
                handler.sendMessage(message);
            }
        } catch (Exception e) {
            e.printStackTrace();
            Log2FileUtil.saveLog2File(e);
            if (handler != null) {
                Message message = Message.obtain();
                message.obj = "服务器无响应!";
                message.what = StatusEnum.HTTP_ERROR.getCode();
                //检查是否因网络或服务异常
                if (!NetworkUtil.isAllNetworkAvailable(context)) {
                    message.obj = "网络异常,请检查网络设置!";
                }
                handler.sendMessage(message);
            }
        }
        return null;
    }

	/**
     * Post请求数据
     *
     * @param context
     * @param url
     * @param params
     * @param handler
     * @return
     */
    public static ResponseResult postResponseResult(Context context, String url, Object params, Handler handler) {
        ResponseResult responseResult = null;
        try {
            Log.i("POST请求:" + context.getClass().getSimpleName(), "地址:" + url);
            Log.i("POST请求:" + context.getClass().getSimpleName(), "参数:" + JsonUtil.toJSONString(params));
            String token = AppCfg.getInstatce(context).getString(Contants.UserInfo.USER_TOKEN, "");
            //获取InputStream
            InputStream is = postRestHandler(context, url, params, handler);
            //获取ResponseResult
            responseResult = parseResponseResult(is, handler);
            //处理ResponseResult弹窗
            if (responseResult != null) {
                Message message = Message.obtain();
                message.what = responseResult.getRespCode();
                message.obj = responseResult.getMessage();
                handler.sendMessage(message);
            }
            Log.i("POST请求:" + context.getClass().getSimpleName(), "结果:" + JsonUtil.toJSONString(responseResult));
        } catch (Exception e) {
            e.printStackTrace();
            ToastUtil.showByString("数据解析出错");
        } finally {
            return responseResult;
        }
    }

    /**
     * Get请求数据
     *
     * @param context
     * @param url
     * @param params
     * @param handler
     * @return
     */
    public static ResponseResult getResponseResult(Context context, String url, Object params, Handler handler) {
        ResponseResult responseResult = null;
        try {
            Log.i("GET请求:" + context.getClass().getSimpleName(), "地址:" + url);
            Log.i("GET请求:" + context.getClass().getSimpleName(), "参数:" + JsonUtil.toJSONString(params));
            String token = AppCfg.getInstatce(context).getString(Contants.UserInfo.USER_TOKEN, "");
            //获取InputStream
            InputStream is = getRestHandler(context, url, params, handler);
            //获取ResponseResult
            responseResult = parseResponseResult(is, handler);
            //处理ResponseResult弹窗
            if (responseResult != null) {
                Message message = Message.obtain();
                message.what = responseResult.getRespCode();
                message.obj = responseResult.getMessage();
                handler.sendMessage(message);
            }
            Log.i("GET请求:" + context.getClass().getSimpleName(), "结果:" + JsonUtil.toJSONString(responseResult));
        } catch (Exception e) {
            e.printStackTrace();
            ToastUtil.showByString("数据解析出错");
        } finally {
            return responseResult;
        }
    }
}

public class ResponseResult implements Serializable {
	private String message; // 接口调用结果描述信息
    private Integer respCode; // 服务响应编号成功为1  -1为请求失败,其它编号
    private Object data;//业务数据

    public String getMessage() {
        return message;
    }

    public void setMessage(String message) {
        this.message = message;
    }

    public Integer getRespCode() {
        return respCode;
    }

    public void setRespCode(Integer respCode) {
        this.respCode = respCode;
    }

    public Object getData() {
        return data;
    }

    public void setData(Object data) {
        this.data = data;
    }
}

public class HttpGetWithEntity extends HttpEntityEnclosingRequestBase {
    private final static String METHOD_NAME = "GET";

    @Override
    public String getMethod() {
        return METHOD_NAME;
    }

    public HttpGetWithEntity() {
        super();
    }

    public HttpGetWithEntity(final URI uri) {
        super();
        setURI(uri);
    }

    HttpGetWithEntity(final String uri) {
        super();
        setURI(URI.create(uri));
    }
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值