package com.fanxin.app.fx.others;
import java.io.InputStream;
import java.util.ArrayList;
import java.util.List;
import java.util.Map;
import java.util.Map.Entry;
import org.apache.http.HttpEntity;
import org.apache.http.HttpResponse;
import org.apache.http.NameValuePair;
import org.apache.http.client.HttpClient;
import org.apache.http.client.entity.UrlEncodedFormEntity;
import org.apache.http.client.methods.HttpGet;
import org.apache.http.client.methods.HttpPost;
import org.apache.http.impl.client.DefaultHttpClient;
import org.apache.http.message.BasicNameValuePair;
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.apache.http.util.EntityUtils;
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONObject;
import android.content.Context;
import android.net.ConnectivityManager;
import android.net.NetworkInfo;
import android.util.Log;
public class HTTPService {
private static final String TAG = HTTPService.class.getSimpleName();
private static HTTPService instance = null;
private static final int CONNECTION_TIMEOUT = 30000;
private HTTPService() {
}
public static HTTPService getInstance() {
if (instance == null) {
instance = new HTTPService();
}
return instance;
}
/**
* 是否有可用网络
*/
public boolean hasActiveNet(Context context) {
ConnectivityManager connManager = (ConnectivityManager) context
.getSystemService(Context.CONNECTIVITY_SERVICE);
if (connManager.getActiveNetworkInfo() != null) {
return connManager.getActiveNetworkInfo().isAvailable();
}
return false;
}
public static boolean hasWifi(Context context) {
ConnectivityManager manager = (ConnectivityManager) context
.getSystemService(Context.CONNECTIVITY_SERVICE);
NetworkInfo networkInfo = manager
.getNetworkInfo(ConnectivityManager.TYPE_WIFI);
if (networkInfo != null) {
return networkInfo.isAvailable();
}
return false;
}
public InputStream getStream(String url) {
HttpParams httpparams = new BasicHttpParams();
HttpConnectionParams.setConnectionTimeout(httpparams,
CONNECTION_TIMEOUT);
HttpClient client = new DefaultHttpClient(httpparams);
HttpGet get = new HttpGet(url);
try {
HttpResponse response = client.execute(get);
int status = response.getStatusLine().getStatusCode();
if (200 == status) {
return response.getEntity().getContent();
}
} catch (Exception e) {
Log.i(TAG, e.getMessage());
}
return null;
}
/**
* Get 请求
*
* @param url
*/
public String[] getRequest(String url, String cookie) {
HttpParams httpparams = new BasicHttpParams();
HttpConnectionParams.setConnectionTimeout(httpparams,
CONNECTION_TIMEOUT);
HttpClient client = new DefaultHttpClient(httpparams);
HttpGet get = new HttpGet(url);
if (cookie != null) {
get.addHeader("Cookie", cookie);
}
try {
HttpResponse response = client.execute(get);
int statusCode = response.getStatusLine().getStatusCode();
HttpEntity entity = response.getEntity();
String result = EntityUtils.toString(entity, "utf-8");
String message = "";
if (statusCode == 200) {
message = "ok";
} else if (statusCode == 500) {
message = "服务器内部错误";
} else {
if (result != null) {
JSONObject obj = JSON.parseObject(result);
if (obj != null && obj.containsKey("error")) {
message = obj.getString("error");
} else {
message = "发生未知错误";
}
} else {
message = "发生未知错误";
}
}
return new String[] { statusCode + "", result, message };
} catch (Exception e) {
Log.i(TAG, e.getMessage());
}
return null;
}
/**
* Post 请求
*/
public String[] postRequest(String url, Map<String, String> headers,
Map<String, String> params, String cookie) {
HttpParams httpparams = new BasicHttpParams();
HttpConnectionParams.setConnectionTimeout(httpparams,
CONNECTION_TIMEOUT);
HttpClient client = new DefaultHttpClient(httpparams);
HttpPost post = new HttpPost(url);
// 添加 headers
if (headers != null) {
for (Entry<String, String> item : headers.entrySet()) {
String key = item.getKey();
String value = item.getValue();
post.addHeader(key, value);
}
}
List<NameValuePair> nvps = new ArrayList<NameValuePair>();
// 添加 form 参数
if (params != null) {
for (Entry<String, String> item : params.entrySet()) {
String key = item.getKey();
String value = item.getValue();
BasicNameValuePair basic = new BasicNameValuePair(key, value);
nvps.add(basic);
}
}
// 如果有 cookie 则添加
if (cookie != null) {
post.addHeader("Cookie", cookie);
}
try {
HttpEntity entity = new UrlEncodedFormEntity(nvps, HTTP.UTF_8);
post.setEntity(entity);
HttpResponse response = client.execute(post);
int statusCode = response.getStatusLine().getStatusCode();
String result = EntityUtils.toString(response.getEntity(), "utf-8");
String message = "";
if (statusCode == 201) {
message = "ok";
} else if (statusCode == 500) {
message = "服务器内部错误";
} else {
if (result != null) {
JSONObject obj = JSON.parseObject(result);
if (obj != null && obj.containsKey("error")) {
message = obj.getString("error");
} else {
message = "发生未知错误";
}
} else {
message = "发生未知错误";
}
}
return new String[] { statusCode + "", result, message };
} catch (Exception e) {
Log.i(TAG, e.getMessage());
}
return null;
}
}