POST
URL, PARAMS 分开发送
public class HttpClient {
private static final AllowAllHostnameVerifier HOSTNAME_VERIFIER = new AllowAllHostnameVerifier();
private static X509TrustManager xtm = new X509TrustManager() {
@Override
public void checkClientTrusted(X509Certificate[] chain, String authType) {
}
@Override
public void checkServerTrusted(X509Certificate[] chain, String authType) {
}
@Override
public X509Certificate[] getAcceptedIssuers() {
return null;
}
};
private static X509TrustManager[] xtmArray = new X509TrustManager[] { xtm };
static String paths = "";
static Map<String, String> paramss = null;
static String encodings = "";
// static String bakold = "";
static String RetBak = "";
static boolean isRe = true;
static int isStop = 0;
// 增加捕获超时异常
public static String sendPOSTRequestForInputStream(String path, Map<String, String> params, String encoding) throws ConnectTimeoutException {
paths = path;
paramss = params;
encodings = encoding;
// bakold = "";
RetBak = "";
isRe = true;
isStop = 0;
class acceptThread extends Thread {
Map<String, String> paramsa = null;
public acceptThread(Map<String, String> params) {
this.paramsa = params;
}
InputStream in = null;
private HttpsURLConnection conn = null;
@Override
public void run() {
String bakn = "";
try {
StringBuilder entityBuilder = new StringBuilder("");
if (paramsa != null && !paramss.isEmpty()) {
for (Map.Entry<String, String> entry : paramss.entrySet()) {
entityBuilder.append(entry.getKey()).append('=');
entityBuilder.append(URLEncoder.encode(entry.getValue(), encodings));
entityBuilder.append('&');
}
entityBuilder.deleteCharAt(entityBuilder.length() - 1);
}
byte[] entity = entityBuilder.toString().getBytes();
URL url = new URL(paths);
conn = (HttpsURLConnection) url.openConnection();
if (conn instanceof HttpsURLConnection) {
// Trust all certificates
SSLContext context = SSLContext.getInstance("TLS");
context.init(new KeyManager[0], xtmArray, new SecureRandom());
SSLSocketFactory socketFactory = context.getSocketFactory();
conn.setSSLSocketFactory(socketFactory);
conn.setHostnameVerifier(HOSTNAME_VERIFIER);
}
conn.setConnectTimeout(20000);// !!!!
conn.setReadTimeout(20000);
conn.setRequestMethod("POST");
conn.setDoOutput(true);
conn.setRequestProperty("Content-Type", "application/x-www-form-urlencoded");
conn.setRequestProperty("Content-Length", String.valueOf(entity.length));
Log.i("PathInfo", paths + " " + entityBuilder.toString());
OutputStream outStream = conn.getOutputStream();
outStream.write(entity);
outStream.flush();
outStream.close();
in = conn.getInputStream();
int num = 0;
byte[] resu = new byte[1024];
// StringBuilder sb = new StringBuilder(); //异步
StringBuffer sb = new StringBuffer(); // 同步
while ((num = in.read(resu)) != -1) {
bakn = new String(resu, 0, num);
// RetBak += URLDecoder.decode(bakn, encodings);
sb.append(URLDecoder.decode(bakn, encodings));
}
RetBak = sb.toString();
in.close();
Log.e("Return", RetBak);
} catch (Exception e) {
e.printStackTrace();
RetBak = "";
} finally {
try {
if (in != null) {
in.close();
}
if (conn != null) {
conn.disconnect();
}
} catch (IOException e) {
e.printStackTrace();
Log.e("CLOUD", "InvokeWebServiceHelper类中释放资源出错");
}
}
isRe = false;
}
}
acceptThread abc = new acceptThread(params);
abc.start();
while (isRe) {
SystemClock.sleep(1);
isStop++;
if (isStop > 120000) {
break;
}
}
return RetBak;
}
}
GET
URL,PARAMS 放在头里一起发送
public class HttpClientGet {
private static final AllowAllHostnameVerifier HOSTNAME_VERIFIER = new AllowAllHostnameVerifier();
private static X509TrustManager xtm = new X509TrustManager() {
@Override
public void checkClientTrusted(X509Certificate[] chain, String authType) {
}
@Override
public void checkServerTrusted(X509Certificate[] chain, String authType) {
}
@Override
public X509Certificate[] getAcceptedIssuers() {
return null;
}
};
private static X509TrustManager[] xtmArray = new X509TrustManager[] { xtm };
static String paths = "";
static Map<String, String> paramss = null;
static String encodings = "";
static String RetBak = "";
static boolean isRe = true;
static int isStop = 0;
// 增加捕获超时异常
public static String sendPOSTRequestForInputStream(String path, Map<String, String> params, String encoding) throws ConnectTimeoutException {
paths = path;
paramss = params;
encodings = encoding;
RetBak = "";
isRe = true;
isStop = 0;
class acceptThread extends Thread {
Map<String, String> paramsa = null;
public acceptThread(Map<String, String> params) {
this.paramsa = params;
}
private HttpsURLConnection conn = null;
InputStream in = null;
@Override
public void run() {
String bakn = "";
try {
StringBuilder entityBuilder = new StringBuilder("");
if (paramsa != null && !paramss.isEmpty()) {
for (Map.Entry<String, String> entry : paramss.entrySet()) {
entityBuilder.append(entry.getKey()).append('=');
entityBuilder.append(URLEncoder.encode(entry.getValue(), encodings));
entityBuilder.append('&');
}
entityBuilder.deleteCharAt(entityBuilder.length() - 1);
}
String httpurl = paths + entityBuilder.toString();
Log.i("AMDownLoad", "httpurl_GET" + httpurl);
URL url = new URL(httpurl);
conn = (HttpsURLConnection) url.openConnection();
if (conn instanceof HttpsURLConnection) {
// Trust all certificates
SSLContext context = SSLContext.getInstance("TLS");
context.init(new KeyManager[0], xtmArray, new SecureRandom());
SSLSocketFactory socketFactory = context.getSocketFactory();
conn.setSSLSocketFactory(socketFactory);
conn.setHostnameVerifier(HOSTNAME_VERIFIER);
}
conn.setConnectTimeout(15000);
conn.setReadTimeout(15000);
conn.setDoInput(true);
conn.setRequestMethod("GET");
conn.setRequestProperty("Content-Type", "text/html");
// conn.setRequestProperty("Content-Type",
// "application/x-www-form-urlencoded");
conn.setRequestProperty("Accept-Charset", encodings);
conn.setRequestProperty("contentType", encodings);
in = conn.getInputStream();
int num = 0;
byte[] resu = new byte[1024];
StringBuffer sb = new StringBuffer(); // 同步
while ((num = in.read(resu)) != -1) {
bakn = new String(resu, 0, num);
sb.append(URLDecoder.decode(bakn, encodings));
}
RetBak = sb.toString();
Log.e("Return", RetBak);
} catch (Exception e) {
e.printStackTrace();
RetBak = "";
} finally {
try {
if (in != null) {
in.close();
}
if (conn != null) {
conn.disconnect();
}
} catch (IOException e) {
e.printStackTrace();
Log.e("CLOUD", "InvokeWebServiceHelper类中释放资源出错");
}
}
isRe = false;
}
}
acceptThread abc = new acceptThread(params);
abc.start();
while (isRe) {
SystemClock.sleep(1);
isStop++;
if (isStop > 120000) {
break;
}
}
return RetBak;
}
}
Defalt 方法
POST
private Runnable runnable = new Runnable() {
@Override
public void run() {
String url = BaseServicesInfo.SERVER_BASE_PATH + fileName;
HttpPost httpRequest = new HttpPost(url);
try{
HttpEntity entity = new UrlEncodedFormEntity(params);
httpRequest.setEntity(entity);
HttpClient client = new DefaultHttpClient();
// 请求超时
client.getParams().setParameter(CoreConnectionPNames.CONNECTION_TIMEOUT, 20000);
// 读取超时
client.getParams().setParameter(CoreConnectionPNames.SO_TIMEOUT, 20000 );
HttpResponse response = client.execute(httpRequest);
if(response.getStatusLine().getStatusCode() == 200){
str = EntityUtils.toString(response.getEntity());
Message msg = new Message();
Bundle data = new Bundle();
data.putString("value", str);
msg.setData(data);
handler.sendMessage(msg);
}else{
str = String.valueOf(response.getStatusLine().getStatusCode());
Message msg = new Message();
Bundle data = new Bundle();
data.putString("error", str);
msg.setData(data);
handler.sendMessage(msg);
}
}catch(Exception e){
e.printStackTrace();
Message msg = new Message();
Bundle data = new Bundle();
data.putString("error", str);
msg.setData(data);
handler.sendMessage(msg);
}
}
};
GET
Runnable runnable = new Runnable() {
@Override
public void run() {
HttpURLConnection conn = null;
InputStream inputStream = null;
try {
URL url = new URL(baseUrl);
conn = (HttpURLConnection)url.openConnection();
conn.setConnectTimeout(10000);
conn.setReadTimeout(8000);
conn.setDoInput(true);
conn.setRequestMethod("GET");
conn.setRequestProperty("Content-Type", "text/html");
conn.setRequestProperty("Accept-Charset", "utf-8");
conn.setRequestProperty("contentType", "utf-8");
inputStream = conn.getInputStream();
byte[] buffer = null;
if(conn.getResponseCode() == 200){
buffer = new byte[1024];
ByteArrayOutputStream out = new ByteArrayOutputStream();
int len;
while ((len = inputStream.read(buffer)) != -1)
{
out.write(buffer, 0, len);
}
buffer = out.toByteArray();
}
mCallback.HandleAsync(buffer);
SendMsg("value",buffer);
} catch (Exception e) {
e.printStackTrace();
Log.e("sjr","Network-error");
}
finally{
try {
if(inputStream != null){
inputStream.close();
}
if(conn != null){
conn.disconnect();
}
} catch (IOException e) {
e.printStackTrace();
Log.e("sjr","InvokeWebServiceHelper类中释放资源出错");
}
}
}
};