HTTP封裝類 工具類 For Android
================2013 04 10 解決2.1 認證問題
package com.su.funycard.util;import java.io.ByteArrayOutputStream; import java.io.DataOutputStream; import java.io.File; import java.io.FileInputStream; import java.io.IOException; import java.io.InputStream; import java.io.OutputStream; import java.net.HttpURLConnection; import java.net.MalformedURLException; import java.net.Socket; import java.net.URL; import java.net.UnknownHostException; import java.security.KeyManagementException; import java.security.KeyStore; import java.security.KeyStoreException; import java.security.NoSuchAlgorithmException; import java.security.UnrecoverableKeyException; import java.util.ArrayList; import java.util.HashMap; import java.util.Map; import java.util.UUID;
import javax.net.ssl.SSLContext; import javax.net.ssl.TrustManager; import javax.net.ssl.X509TrustManager;
import org.apache.http.Header; import org.apache.http.HttpEntity; import org.apache.http.HttpResponse; import org.apache.http.HttpStatus; import org.apache.http.HttpVersion; 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.conn.ClientConnectionManager; import org.apache.http.conn.ConnectTimeoutException; import org.apache.http.conn.params.ConnManagerParams; import org.apache.http.conn.scheme.PlainSocketFactory; import org.apache.http.conn.scheme.Scheme; import org.apache.http.conn.scheme.SchemeRegistry; import org.apache.http.conn.ssl.SSLSocketFactory; import org.apache.http.impl.client.DefaultHttpClient; import org.apache.http.impl.conn.tsccm.ThreadSafeClientConnManager; import org.apache.http.message.BasicHeader; 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.params.HttpProtocolParams; import org.apache.http.protocol.HTTP; import org.apache.http.util.EntityUtils;
import android.content.Context; import android.net.ConnectivityManager; import android.net.NetworkInfo; import android.util.Log; import android.widget.Toast;
/**
- HttpUtil Class Capsule Most Functions of Http Operations
- @author sfshine
/ public class HttpUtil { private static Header[] headers = new BasicHeader[1]; private static String TAG = "HTTPUTIL"; private static int TIMEOUT = 5 1000; private static final String BOUNDARY = "---------------------------7db1c523809b2"; /**
- Your header of http op
@return */ static {
headers[0] = new BasicHeader("User-Agent",
"Mozilla/4.0 (compatible; MSIE 5.0; Windows XP; DigExt)");
}
public static boolean delete(String murl) throws Exception { URL url = new URL(murl); HttpURLConnection conn = (HttpURLConnection) url.openConnection(); conn.setRequestMethod("DELETE"); conn.setConnectTimeout(5000); if (conn.getResponseCode() == 204) {
MLog.e(conn.toString()); return true;
} MLog.e(conn.getRequestMethod()); MLog.e(conn.getResponseCode() + ""); return false; }
/**
- Op Http get request
- @param url
- @param map
- Values to request
@return */ static public String get(String url) { return get(url, null);
}
static public String get(String url, HashMap<String, String> map) {
HttpClient client = getNewHttpClient(); HttpConnectionParams.setConnectionTimeout(client.getParams(), TIMEOUT); HttpConnectionParams.setSoTimeout(client.getParams(), TIMEOUT); ConnManagerParams.setTimeout(client.getParams(), TIMEOUT); String result = "ERROR"; if (null != map) {
int i = 0; for (Map.Entry<String, String> entry : map.entrySet()) { Log.i(TAG, entry.getKey() + "=>" + entry.getValue()); if (i == 0) { url = url + "?" + entry.getKey() + "=" + entry.getValue(); } else { url = url + "&" + entry.getKey() + "=" + entry.getValue(); } i++; }
} HttpGet get = new HttpGet(url); get.setHeaders(headers); Log.i(TAG, url); try {
HttpResponse response = client.execute(get); if (response.getStatusLine().getStatusCode() == HttpStatus.SC_OK) { // setCookie(response); result = EntityUtils.toString(response.getEntity(), "UTF-8"); } else { result = EntityUtils.toString(response.getEntity(), "UTF-8") + response.getStatusLine().getStatusCode() + "ERROR"; }
} catch (ConnectTimeoutException e) {
result = "TIMEOUTERROR";
}
catch (Exception e) {
result = "OTHERERROR"; e.printStackTrace();
} Log.i(TAG, "result =>" + result);
return result; }
/**
- Op Http post request , "404error" response if failed
- @param url
- @param map
- Values to request
@return */
static public String post(String url, HashMap<String, String> map) {
HttpClient client = getNewHttpClient(); HttpConnectionParams.setConnectionTimeout(client.getParams(), TIMEOUT); HttpConnectionParams.setSoTimeout(client.getParams(), TIMEOUT); ConnManagerParams.setTimeout(client.getParams(), TIMEOUT); HttpPost post = new HttpPost(url); MLog.i(TAG, url); post.setHeaders(headers); String result = "ERROR"; ArrayList<BasicNameValuePair> pairList = new ArrayList<BasicNameValuePair>(); if (map != null) {
for (Map.Entry<String, String> entry : map.entrySet()) { Log.i(TAG, entry.getKey() + "=>" + entry.getValue()); BasicNameValuePair pair = new BasicNameValuePair( entry.getKey(), entry.getValue()); pairList.add(pair); }
} try {
HttpEntity entity = new UrlEncodedFormEntity(pairList, "UTF-8"); post.setEntity(entity); HttpResponse response = client.execute(post); if (response.getStatusLine().getStatusCode() == HttpStatus.SC_OK) { result = EntityUtils.toString(response.getEntity(), "UTF-8"); } else { result = EntityUtils.toString(response.getEntity(), "UTF-8") + response.getStatusLine().getStatusCode() + "ERROR"; }
} catch (ConnectTimeoutException e) {
result = "TIMEOUTERROR";
}
catch (Exception e) {
result = "OTHERERROR"; e.printStackTrace();
} Log.i(TAG, "result =>" + result); return result; }
/**
- 自定義的http請求可以設置為DELETE PUT等而不是GET
- @param url
- @param params
- @param method
@throws IOException */
public static String customrequest(String url,
HashMap<String, String> params, String method) {
try {
URL postUrl = new URL(url); HttpURLConnection conn = (HttpURLConnection) postUrl .openConnection(); conn.setDoOutput(true); conn.setDoInput(true); conn.setConnectTimeout(5 * 1000); conn.setRequestMethod(method); conn.setUseCaches(false); conn.setInstanceFollowRedirects(true); conn.setRequestProperty("Content-Type", "application/x-www-form-urlencoded"); conn.setRequestProperty("User-Agent", "Mozilla/4.0 (compatible; MSIE 5.0; Windows XP; DigExt)"); conn.connect(); OutputStream out = conn.getOutputStream(); StringBuilder sb = new StringBuilder(); if (null != params) { int i = params.size(); for (Map.Entry<String, String> entry : params.entrySet()) { if (i == 1) { sb.append(entry.getKey() + "=" + entry.getValue()); } else { sb.append(entry.getKey() + "=" + entry.getValue() + "&"); } i--; } } String content = sb.toString(); out.write(content.getBytes("UTF-8")); out.flush(); out.close(); InputStream inStream = conn.getInputStream(); String result = inputStream2String(inStream); Log.i(TAG, "result>" + result); conn.disconnect(); return result;
} catch (Exception e) {
// TODO: handle exception
} return null; }
/**
- 必須嚴格限制get請求所以增加這個方法 這個方法也可以自定義請求
- @param url
- @param method
@throws Exception */
public static String customrequestget(String url,
HashMap<String, String> map, String method) {
if (null != map) {
int i = 0; for (Map.Entry<String, String> entry : map.entrySet()) { if (i == 0) { url = url + "?" + entry.getKey() + "=" + entry.getValue(); } else { url = url + "&" + entry.getKey() + "=" + entry.getValue(); } i++; }
} try {
URL murl = new URL(url); System.out.print(url); HttpURLConnection conn = (HttpURLConnection) murl.openConnection(); conn.setConnectTimeout(5 * 1000); conn.setRequestMethod(method); conn.setRequestProperty("User-Agent", "Mozilla/4.0 (compatible; MSIE 5.0; Windows XP; DigExt)"); InputStream inStream = conn.getInputStream(); String result = inputStream2String(inStream); Log.i(TAG, "result>" + result); conn.disconnect(); return result;
} catch (Exception e) {
// TODO: handle exception
} return null; }
/**
上傳多張圖片 */ public static String post(String actionUrl, Map<String, String> params,
Map<String, File> files) {
String BOUNDARY = java.util.UUID.randomUUID().toString(); String PREFIX = "--", LINEND = "\r\n"; String MULTIPART_FROM_DATA = "multipart/form-data"; String CHARSET = "UTF-8"; try {
URL uri = new URL(actionUrl); HttpURLConnection conn = (HttpURLConnection) uri.openConnection(); conn.setReadTimeout(5 * 1000); // 緩存的最長時間 conn.setDoInput(true);// 允許輸入 conn.setDoOutput(true);// 允許輸出 conn.setUseCaches(false); // 不允許使用緩存 conn.setRequestMethod("POST"); conn.setRequestProperty("connection", "keep-alive"); conn.setRequestProperty("Charsert", "UTF-8"); conn.setRequestProperty("Content-Type", MULTIPART_FROM_DATA + ";boundary=" + BOUNDARY); // 首先組拼文本類型的參數 StringBuilder sb = new StringBuilder(); for (Map.Entry<String, String> entry : params.entrySet()) { sb.append(PREFIX); sb.append(BOUNDARY); sb.append(LINEND); sb.append("Content-Disposition: form-data; name=\"" + entry.getKey() + "\"" + LINEND); sb.append("Content-Type: text/plain; charset=" + CHARSET + LINEND); sb.append("Content-Transfer-Encoding: 8bit" + LINEND); sb.append(LINEND); sb.append(entry.getValue()); sb.append(LINEND); } DataOutputStream outStream = new DataOutputStream( conn.getOutputStream()); outStream.write(sb.toString().getBytes()); InputStream in = null; // 發送文件數據 if (files != null) { for (Map.Entry<String, File> file : files.entrySet()) { StringBuilder sb1 = new StringBuilder(); sb1.append(PREFIX); sb1.append(BOUNDARY); sb1.append(LINEND); sb1.append("Content-Disposition: form-data; name=\"" + file.getKey() + "\"; filename=\"" + file.getValue().getName() + "\"" + LINEND); sb1.append("Content-Type: image/pjpeg; " + LINEND); sb1.append(LINEND); outStream.write(sb1.toString().getBytes()); InputStream is = new FileInputStream(file.getValue()); byte[] buffer = new byte[1024]; int len = 0; while ((len = is.read(buffer)) != -1) { outStream.write(buffer, 0, len); } is.close(); outStream.write(LINEND.getBytes()); } // 請求結束標志 byte[] end_data = (PREFIX + BOUNDARY + PREFIX + LINEND) .getBytes(); outStream.write(end_data); outStream.flush(); // 得到響應碼 int res = conn.getResponseCode(); // if (res == 200) { in = conn.getInputStream(); int ch; StringBuilder sb2 = new StringBuilder(); while ((ch = in.read()) != -1) { sb2.append((char) ch); } // } outStream.close(); conn.disconnect(); return in.toString(); }
} catch (Exception e) {
} return null;
}
/**
- is轉String
- @param in
- @return
@throws IOException */ public static String inputStream2String(InputStream in) throws IOException { StringBuffer out = new StringBuffer(); byte[] b = new byte[4096]; for (int n; (n = in.read(b)) != -1;) {
out.append(new String(b, 0, n));
} return out.toString(); }
/**
- check net work
- @param context
@return */ public static boolean hasNetwork(Context context) { ConnectivityManager con = (ConnectivityManager) context
.getSystemService(Context.CONNECTIVITY_SERVICE);
NetworkInfo workinfo = con.getActiveNetworkInfo(); if (workinfo == null || !workinfo.isAvailable()) {
Toast.makeText(context, "當前無網絡連接,請稍后重試", Toast.LENGTH_SHORT).show(); return false;
} return true; }
/***
- @category check if the string is null
- @return true if is null
*/ public static boolean isNull(String string) { boolean t1 = "".equals(string); boolean t2 = string == null; boolean t3 = string.equals("null"); if (t1 || t2 || t3) {
return true;
} else {
return false;
} }
static public byte[] getBytes(File file) throws IOException { InputStream ios = null; ByteArrayOutputStream ous = null; try {
byte[] buffer = new byte[4096]; ous = new ByteArrayOutputStream(); ios = new FileInputStream(file); int read = 0; while ((read = ios.read(buffer)) != -1) { ous.write(buffer, 0, read); }
} finally {
try { if (ous != null) ous.close(); } catch (IOException e) { } try { if (ios != null) ios.close(); } catch (IOException e) { }
}
return ous.toByteArray(); }
public static class MLog { static public void e(String msg) {
android.util.Log.e("=======ERROR======", msg);
}
static public void e(String tag, String msg) {
android.util.Log.e(tag, msg);
}
static public void i(String msg) {
android.util.Log.i("=======INFO======", msg);
}
static public void i(String tag, String msg) {
android.util.Log.i(tag, msg);
}
}
/**
- 處理https加密失敗的情況
@return */ public static HttpClient getNewHttpClient() { try {
KeyStore trustStore = KeyStore.getInstance(KeyStore .getDefaultType()); trustStore.load(null, null); SSLSocketFactory sf = new HttpUtil.SSLSocketFactoryEx(trustStore); sf.setHostnameVerifier(SSLSocketFactory.ALLOW_ALL_HOSTNAME_VERIFIER); HttpParams params = new BasicHttpParams(); HttpProtocolParams.setVersion(params, HttpVersion.HTTP_1_1); HttpProtocolParams.setContentCharset(params, HTTP.UTF_8); SchemeRegistry registry = new SchemeRegistry(); registry.register(new Scheme("http", PlainSocketFactory .getSocketFactory(), 80)); registry.register(new Scheme("https", sf, 443)); ClientConnectionManager ccm = new ThreadSafeClientConnManager( params, registry); return new DefaultHttpClient(ccm, params);
} catch (Exception e) {
return new DefaultHttpClient();
} }
static public class SSLSocketFactoryEx extends SSLSocketFactory {
SSLContext sslContext = SSLContext.getInstance("TLS");
public SSLSocketFactoryEx(KeyStore truststore)
throws NoSuchAlgorithmException, KeyManagementException, KeyStoreException, UnrecoverableKeyException { super(truststore); TrustManager tm = new X509TrustManager() { public java.security.cert.X509Certificate[] getAcceptedIssuers() { return null; } @Override public void checkClientTrusted( java.security.cert.X509Certificate[] chain, String authType) throws java.security.cert.CertificateException { } @Override public void checkServerTrusted( java.security.cert.X509Certificate[] chain, String authType) throws java.security.cert.CertificateException { } }; sslContext.init(null, new TrustManager[] { tm }, null);
}
@Override public Socket createSocket(Socket socket, String host, int port,
boolean autoClose) throws IOException, UnknownHostException { return sslContext.getSocketFactory().createSocket(socket, host, port, autoClose);
}
@Override public Socket createSocket() throws IOException {
return sslContext.getSocketFactory().createSocket();
} } }</pre>
================2013 04 09 完全無其他依賴
package com.example.testbingtoken;
import java.io.ByteArrayOutputStream; import java.io.DataOutputStream; import java.io.File; import java.io.FileInputStream; import java.io.IOException; import java.io.InputStream; import java.io.OutputStream; import java.net.HttpURLConnection; import java.net.MalformedURLException; import java.net.URL; import java.security.KeyStore; import java.util.ArrayList; import java.util.HashMap; import java.util.Map; import java.util.UUID;
import org.apache.http.Header; import org.apache.http.HttpEntity; import org.apache.http.HttpResponse; import org.apache.http.HttpStatus; import org.apache.http.HttpVersion; 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.conn.ClientConnectionManager; import org.apache.http.conn.ConnectTimeoutException; import org.apache.http.conn.params.ConnManagerParams; import org.apache.http.conn.scheme.PlainSocketFactory; import org.apache.http.conn.scheme.Scheme; import org.apache.http.conn.scheme.SchemeRegistry; import org.apache.http.conn.ssl.SSLSocketFactory; import org.apache.http.impl.client.DefaultHttpClient; import org.apache.http.impl.conn.tsccm.ThreadSafeClientConnManager; import org.apache.http.message.BasicHeader; 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.params.HttpProtocolParams; import org.apache.http.protocol.HTTP; import org.apache.http.util.EntityUtils;
import android.content.Context; import android.net.ConnectivityManager; import android.net.NetworkInfo; import android.util.Log; import android.widget.Toast;
/**
- HttpUtil Class Capsule Most Functions of Http Operations
- @author sfshine
/ public class HttpUtil { private static Header[] headers = new BasicHeader[1]; private static String TAG = "HTTPUTIL"; private static int TIMEOUT = 5 1000; private static final String BOUNDARY = "---------------------------7db1c523809b2"; /**
- Your header of http op
@return */ static {
headers[0] = new BasicHeader("User-Agent",
"Mozilla/4.0 (compatible; MSIE 5.0; Windows XP; DigExt)");
}
public static boolean delete(String murl) throws Exception { URL url = new URL(murl); HttpURLConnection conn = (HttpURLConnection) url.openConnection(); conn.setRequestMethod("DELETE"); conn.setConnectTimeout(5000); if (conn.getResponseCode() == 204) {
MLog.e(conn.toString()); return true;
} MLog.e(conn.getRequestMethod()); MLog.e(conn.getResponseCode() + ""); return false; }
/**
- Op Http get request
- @param url
- @param map
- Values to request
@return */ static public String get(String url) { return get(url, null);
}
static public String get(String url, HashMap<String, String> map) {
HttpClient client = new DefaultHttpClient(); HttpConnectionParams.setConnectionTimeout(client.getParams(), TIMEOUT); HttpConnectionParams.setSoTimeout(client.getParams(), TIMEOUT); ConnManagerParams.setTimeout(client.getParams(), TIMEOUT); String result = "ERROR"; if (null != map) {
int i = 0; for (Map.Entry<String, String> entry : map.entrySet()) { Log.i(TAG, entry.getKey() + "=>" + entry.getValue()); if (i == 0) { url = url + "?" + entry.getKey() + "=" + entry.getValue(); } else { url = url + "&" + entry.getKey() + "=" + entry.getValue(); } i++; }
} HttpGet get = new HttpGet(url); get.setHeaders(headers); Log.i(TAG, url); try {
HttpResponse response = client.execute(get); if (response.getStatusLine().getStatusCode() == HttpStatus.SC_OK) { // setCookie(response); result = EntityUtils.toString(response.getEntity(), "UTF-8"); } else { result = EntityUtils.toString(response.getEntity(), "UTF-8") + response.getStatusLine().getStatusCode() + "ERROR"; }
} catch (ConnectTimeoutException e) {
result = "TIMEOUTERROR";
}
catch (Exception e) {
result = "OTHERERROR"; e.printStackTrace();
} Log.i(TAG, "result =>" + result);
return result; }
/**
- Op Http post request , "404error" response if failed
- @param url
- @param map
- Values to request
@return */
static public String post(String url, HashMap<String, String> map) {
HttpClient client = new DefaultHttpClient(); HttpConnectionParams.setConnectionTimeout(client.getParams(), TIMEOUT); HttpConnectionParams.setSoTimeout(client.getParams(), TIMEOUT); ConnManagerParams.setTimeout(client.getParams(), TIMEOUT); HttpPost post = new HttpPost(url); MLog.i(TAG, url); post.setHeaders(headers); String result = "ERROR"; ArrayList<BasicNameValuePair> pairList = new ArrayList<BasicNameValuePair>(); if (map != null) {
for (Map.Entry<String, String> entry : map.entrySet()) { Log.i(TAG, entry.getKey() + "=>" + entry.getValue()); BasicNameValuePair pair = new BasicNameValuePair( entry.getKey(), entry.getValue()); pairList.add(pair); }
} try {
HttpEntity entity = new UrlEncodedFormEntity(pairList, "UTF-8"); post.setEntity(entity); HttpResponse response = client.execute(post); if (response.getStatusLine().getStatusCode() == HttpStatus.SC_OK) { result = EntityUtils.toString(response.getEntity(), "UTF-8"); } else { result = EntityUtils.toString(response.getEntity(), "UTF-8") + response.getStatusLine().getStatusCode() + "ERROR"; }
} catch (ConnectTimeoutException e) {
result = "TIMEOUTERROR";
}
catch (Exception e) {
result = "OTHERERROR"; e.printStackTrace();
} Log.i(TAG, "result =>" + result); return result; }
/**
- 自定義的http請求可以設置為DELETE PUT等而不是GET
- @param url
- @param params
- @param method
@throws IOException */
public static String customrequest(String url,
HashMap<String, String> params, String method) {
try {
URL postUrl = new URL(url); HttpURLConnection conn = (HttpURLConnection) postUrl .openConnection(); conn.setDoOutput(true); conn.setDoInput(true); conn.setConnectTimeout(5 * 1000); conn.setRequestMethod(method); conn.setUseCaches(false); conn.setInstanceFollowRedirects(true); conn.setRequestProperty("Content-Type", "application/x-www-form-urlencoded"); conn.setRequestProperty("User-Agent", "Mozilla/4.0 (compatible; MSIE 5.0; Windows XP; DigExt)"); conn.connect(); OutputStream out = conn.getOutputStream(); StringBuilder sb = new StringBuilder(); if (null != params) { int i = params.size(); for (Map.Entry<String, String> entry : params.entrySet()) { if (i == 1) { sb.append(entry.getKey() + "=" + entry.getValue()); } else { sb.append(entry.getKey() + "=" + entry.getValue() + "&"); } i--; } } String content = sb.toString(); out.write(content.getBytes("UTF-8")); out.flush(); out.close(); InputStream inStream = conn.getInputStream(); String result = inputStream2String(inStream); Log.i(TAG, "result>" + result); conn.disconnect(); return result;
} catch (Exception e) {
// TODO: handle exception
} return null; }
/**
- 必須嚴格限制get請求所以增加這個方法 這個方法也可以自定義請求
- @param url
- @param method
@throws Exception */
public static String customrequestget(String url,
HashMap<String, String> map, String method) {
if (null != map) {
int i = 0; for (Map.Entry<String, String> entry : map.entrySet()) { if (i == 0) { url = url + "?" + entry.getKey() + "=" + entry.getValue(); } else { url = url + "&" + entry.getKey() + "=" + entry.getValue(); } i++; }
} try {
URL murl = new URL(url); System.out.print(url); HttpURLConnection conn = (HttpURLConnection) murl.openConnection(); conn.setConnectTimeout(5 * 1000); conn.setRequestMethod(method); conn.setRequestProperty("User-Agent", "Mozilla/4.0 (compatible; MSIE 5.0; Windows XP; DigExt)"); InputStream inStream = conn.getInputStream(); String result = inputStream2String(inStream); Log.i(TAG, "result>" + result); conn.disconnect(); return result;
} catch (Exception e) {
// TODO: handle exception
} return null; }
/**
上傳多張圖片 */ public static void post(String actionUrl, Map<String, String> params,
Map<String, File> files) throws IOException {
String BOUNDARY = java.util.UUID.randomUUID().toString(); String PREFIX = "--", LINEND = "\r\n"; String MULTIPART_FROM_DATA = "multipart/form-data"; String CHARSET = "UTF-8";
URL uri = new URL(actionUrl); HttpURLConnection conn = (HttpURLConnection) uri.openConnection(); conn.setReadTimeout(5 * 1000); // 緩存的最長時間 conn.setDoInput(true);// 允許輸入 conn.setDoOutput(true);// 允許輸出 conn.setUseCaches(false); // 不允許使用緩存 conn.setRequestMethod("POST"); conn.setRequestProperty("connection", "keep-alive"); conn.setRequestProperty("Charsert", "UTF-8"); conn.setRequestProperty("Content-Type", MULTIPART_FROM_DATA
+ ";boundary=" + BOUNDARY);
// 首先組拼文本類型的參數 StringBuilder sb = new StringBuilder(); for (Map.Entry<String, String> entry : params.entrySet()) {
sb.append(PREFIX); sb.append(BOUNDARY); sb.append(LINEND); sb.append("Content-Disposition: form-data; name=\"" + entry.getKey() + "\"" + LINEND); sb.append("Content-Type: text/plain; charset=" + CHARSET + LINEND); sb.append("Content-Transfer-Encoding: 8bit" + LINEND); sb.append(LINEND); sb.append(entry.getValue()); sb.append(LINEND);
}
DataOutputStream outStream = new DataOutputStream(
conn.getOutputStream());
outStream.write(sb.toString().getBytes()); InputStream in = null; // 發送文件數據 if (files != null) {
for (Map.Entry<String, File> file : files.entrySet()) { StringBuilder sb1 = new StringBuilder(); sb1.append(PREFIX); sb1.append(BOUNDARY); sb1.append(LINEND); sb1.append("Content-Disposition: form-data; name=\"source\"; filename=\"" + file.getValue().getName() + "\"" + LINEND); sb1.append("Content-Type: image/pjpeg; " + LINEND); sb1.append(LINEND); outStream.write(sb1.toString().getBytes()); InputStream is = new FileInputStream(file.getValue()); byte[] buffer = new byte[1024]; int len = 0; while ((len = is.read(buffer)) != -1) { outStream.write(buffer, 0, len); } is.close(); outStream.write(LINEND.getBytes()); } // 請求結束標志 byte[] end_data = (PREFIX + BOUNDARY + PREFIX + LINEND).getBytes(); outStream.write(end_data); outStream.flush(); // 得到響應碼 int res = conn.getResponseCode(); // if (res == 200) { in = conn.getInputStream(); int ch; StringBuilder sb2 = new StringBuilder(); while ((ch = in.read()) != -1) { sb2.append((char) ch); } // } outStream.close(); conn.disconnect();
} // return in.toString();
}
/**
- is轉String
- @param in
- @return
@throws IOException */ public static String inputStream2String(InputStream in) throws IOException { StringBuffer out = new StringBuffer(); byte[] b = new byte[4096]; for (int n; (n = in.read(b)) != -1;) {
out.append(new String(b, 0, n));
} return out.toString(); }
/**
- check net work
- @param context
@return */ public static boolean hasNetwork(Context context) { ConnectivityManager con = (ConnectivityManager) context
.getSystemService(Context.CONNECTIVITY_SERVICE);
NetworkInfo workinfo = con.getActiveNetworkInfo(); if (workinfo == null || !workinfo.isAvailable()) {
Toast.makeText(context, "當前無網絡連接,請稍后重試", Toast.LENGTH_SHORT).show(); return false;
} return true; }
/***
- @category check if the string is null
- @return true if is null
*/ public static boolean isNull(String string) { boolean t1 = "".equals(string); boolean t2 = string == null; boolean t3 = string.equals("null"); if (t1 || t2 || t3) {
return true;
} else {
return false;
} }
static public byte[] getBytes(File file) throws IOException { InputStream ios = null; ByteArrayOutputStream ous = null; try {
byte[] buffer = new byte[4096]; ous = new ByteArrayOutputStream(); ios = new FileInputStream(file); int read = 0; while ((read = ios.read(buffer)) != -1) { ous.write(buffer, 0, read); }
} finally {
try { if (ous != null) ous.close(); } catch (IOException e) { } try { if (ios != null) ios.close(); } catch (IOException e) { }
}
return ous.toByteArray(); }
public static class MLog { static public void e(String msg) {
android.util.Log.e("=======ERROR======", msg);
}
static public void e(String tag, String msg) {
android.util.Log.e(tag, msg);
}
static public void i(String msg) {
android.util.Log.i("=======INFO======", msg);
}
static public void i(String tag, String msg) {
android.util.Log.i(tag, msg);
}
} }</pre>
package com.su.doubanrise.util;
import java.io.BufferedOutputStream; import java.io.BufferedReader; import java.io.ByteArrayOutputStream; import java.io.DataOutputStream; import java.io.File; import java.io.FileInputStream; import java.io.FileNotFoundException; import java.io.IOException; import java.io.InputStream; import java.io.InputStreamReader; import java.io.OutputStream; import java.net.HttpURLConnection; import java.net.InetAddress; import java.net.Socket; import java.net.SocketTimeoutException; import java.net.URL; import java.net.URLConnection; import java.net.URLDecoder; import java.util.ArrayList; import java.util.HashMap; import java.util.Iterator; import java.util.Map; import java.util.Set;
import org.apache.http.Header; import org.apache.http.HttpEntity; import org.apache.http.HttpResponse; import org.apache.http.HttpStatus; 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.conn.ConnectTimeoutException; import org.apache.http.conn.params.ConnManagerParams; import org.apache.http.impl.client.DefaultHttpClient; import org.apache.http.message.BasicHeader; import org.apache.http.message.BasicNameValuePair; import org.apache.http.params.HttpConnectionParams; import org.apache.http.protocol.HTTP; import org.apache.http.util.EntityUtils;
import android.content.Context; import android.net.ConnectivityManager; import android.net.NetworkInfo; import android.util.Log; import android.widget.Toast;
import com.su.doubanrise.api.Douban; import com.su.doubanrise.api.bean.FormFile;
/**
- HttpUtil Class Capsule Most Functions of Http Operations
- @author sfshine
*/ public class HttpUtil {
private static Header[] headers = new BasicHeader[11]; private static String TAG = "HTTPUTIL"; private static int TIMEOUT = 5 * 1000; private static final String BOUNDARY = "---------------------------7db1c523809b2"; /**
Your header of http op */ static { headers[0] = new BasicHeader("Authorization", "Bearer "
+ Douban.getAccessToken());
headers[1] = new BasicHeader("Udid", ""); headers[2] = new BasicHeader("Os", ""); headers[3] = new BasicHeader("Osversion", ""); headers[4] = new BasicHeader("Appversion", ""); headers[5] = new BasicHeader("Sourceid", ""); headers[6] = new BasicHeader("Ver", ""); headers[7] = new BasicHeader("Userid", ""); headers[8] = new BasicHeader("Usersession", ""); headers[9] = new BasicHeader("Unique", ""); headers[10] = new BasicHeader("Cookie", ""); }
public static boolean delete(String murl) throws Exception { URL url = new URL(murl); HttpURLConnection conn = (HttpURLConnection) url.openConnection(); conn.setRequestMethod("DELETE"); conn.setConnectTimeout(5000); if (conn.getResponseCode() == 204) {
MLog.e(conn.toString()); return true;
} MLog.e(conn.getRequestMethod()); MLog.e(conn.getResponseCode() + ""); return false; }
/**
- Op Http get request
- @param url
- @param map
- Values to request
@return */ static public String get(String url) { return get(url, null);
}
static public String get(String url, HashMap<String, String> map) {
DefaultHttpClient client = new DefaultHttpClient(); HttpConnectionParams.setConnectionTimeout(client.getParams(), TIMEOUT); HttpConnectionParams.setSoTimeout(client.getParams(), TIMEOUT); ConnManagerParams.setTimeout(client.getParams(), TIMEOUT);
MLog.e(headers[0] + ""); String result = "ERROR"; if (null != map) {
int i = 0; for (Map.Entry<String, String> entry : map.entrySet()) { Log.i(TAG, entry.getKey() + "=>" + entry.getValue()); if (i == 0) { url = url + "?" + entry.getKey() + "=" + entry.getValue(); } else { url = url + "&" + entry.getKey() + "=" + entry.getValue(); } i++; }
} HttpGet get = new HttpGet(url); get.setHeaders(headers); Log.i(TAG, url); try {
HttpResponse response = client.execute(get); if (response.getStatusLine().getStatusCode() == HttpStatus.SC_OK) { // setCookie(response); result = EntityUtils.toString(response.getEntity(), "UTF-8"); } else { result = EntityUtils.toString(response.getEntity(), "UTF-8") + response.getStatusLine().getStatusCode() + "ERROR"; }
} catch (ConnectTimeoutException e) {
result = "TIMEOUTERROR";
}
catch (Exception e) {
result = "OTHERERROR"; e.printStackTrace();
} Log.i(TAG, "result =>" + result); return result; }
/**
- 上傳帶圖片的http請求
- @param murl網址
- @param map
- 參數對 主要不要包括圖片
- @param path
- 圖片路徑 也可以是其他格式 自行做
- @return
@throws Exception */ static public String post(String murl, HashMap<String, String> map,
String path) throws Exception {
File file = new File(path); String filename = path.substring(path.lastIndexOf("/")); // String filename = Str.md5(path); StringBuilder sb = new StringBuilder(); if (null != map) {
for (Map.Entry<String, String> entry : map.entrySet()) { sb.append("--" + BOUNDARY + "\r\n"); sb.append("Content-Disposition: form-data; name=\"" + entry.getKey() + "\"" + "\r\n"); sb.append("\r\n"); sb.append(entry.getValue() + "\r\n"); }
}
sb.append("--" + BOUNDARY + "\r\n"); sb.append("Content-Disposition: form-data; name=\"image\"; filename=\""
+ filename + "\"" + "\r\n");
sb.append("Content-Type: image/pjpeg" + "\r\n"); sb.append("\r\n");
byte[] before = sb.toString().getBytes("UTF-8"); byte[] after = ("\r\n--" + BOUNDARY + "--\r\n").getBytes("UTF-8");
URL url = new URL(murl); HttpURLConnection conn = (HttpURLConnection) url.openConnection(); conn.setRequestMethod("POST"); conn.setRequestProperty("Content-Type",
"multipart/form-data; boundary=" + BOUNDARY);
conn.setRequestProperty("Authorization",
"Bearer " + Douban.getAccessToken());
conn.setRequestProperty("Content-Length",
String.valueOf(before.length + file.length() + after.length));
conn.setRequestProperty("HOST", url.getHost()); conn.setDoOutput(true);
OutputStream out = conn.getOutputStream(); InputStream in = new FileInputStream(file);
out.write(before);
byte[] buf = new byte[1024]; int len; while ((len = in.read(buf)) != -1)
out.write(buf, 0, len);
out.write(after);
in.close(); out.close(); MLog.i("result=>" + inputStream2String(conn.getInputStream()) + ""); if (conn.getResponseCode() == HttpStatus.SC_OK) {
return inputStream2String(conn.getInputStream());
} else {
return inputStream2String(conn.getInputStream()) + "Code" + conn.getResponseCode();
}
}
/**
- is轉String
- @param in
- @return
@throws IOException */ public static String inputStream2String(InputStream in) throws IOException { StringBuffer out = new StringBuffer(); byte[] b = new byte[4096]; for (int n; (n = in.read(b)) != -1;) {
out.append(new String(b, 0, n));
} return out.toString(); }
/**
- Op Http post request , "404error" response if failed
- @param url
- @param map
- Values to request
@return */
static public String post(String url, HashMap<String, String> map) {
DefaultHttpClient client = new DefaultHttpClient(); HttpConnectionParams.setConnectionTimeout(client.getParams(), TIMEOUT); HttpConnectionParams.setSoTimeout(client.getParams(), TIMEOUT); ConnManagerParams.setTimeout(client.getParams(), TIMEOUT); HttpPost post = new HttpPost(url); Log.i(TAG, url); MLog.e(headers[0] + ""); post.setHeaders(headers); String result = "ERROR"; ArrayList<BasicNameValuePair> pairList = new ArrayList<BasicNameValuePair>(); if (map != null) {
for (Map.Entry<String, String> entry : map.entrySet()) { Log.i(TAG, entry.getKey() + "=>" + entry.getValue()); BasicNameValuePair pair = new BasicNameValuePair( entry.getKey(), entry.getValue()); pairList.add(pair); }
} try {
HttpEntity entity = new UrlEncodedFormEntity(pairList, "UTF-8"); post.setEntity(entity); HttpResponse response = client.execute(post); if (response.getStatusLine().getStatusCode() == HttpStatus.SC_OK) { result = EntityUtils.toString(response.getEntity(), "UTF-8"); } else { result = EntityUtils.toString(response.getEntity(), "UTF-8") + response.getStatusLine().getStatusCode() + "ERROR"; }
} catch (ConnectTimeoutException e) {
result = "TIMEOUTERROR";
}
catch (Exception e) {
result = "OTHERERROR"; e.printStackTrace();
} Log.i(TAG, "result =>" + result); return result; }
/**
- Post Bytes to Server
- @param url
- @param bytes
- of text
@return */ public static String PostBytes(String url, byte[] bytes) { try {
URL murl = new URL(url); final HttpURLConnection con = (HttpURLConnection) murl .openConnection(); con.setDoInput(true); con.setDoOutput(true); con.setUseCaches(false); con.setRequestMethod("POST"); con.setRequestProperty("Connection", "Keep-Alive"); con.setRequestProperty("Charset", "UTF-8"); con.setRequestProperty("Content-Type", "text/html"); String cookie = headers[10].getValue(); if (!isNull(headers[10].getValue())) { con.setRequestProperty("cookie", cookie); } con.setReadTimeout(TIMEOUT); con.setConnectTimeout(TIMEOUT); Log.i(TAG, url); DataOutputStream dsDataOutputStream = new DataOutputStream( con.getOutputStream()); dsDataOutputStream.write(bytes, 0, bytes.length); dsDataOutputStream.close(); if (con.getResponseCode() == HttpStatus.SC_OK) { InputStream isInputStream = con.getInputStream(); int ch; StringBuffer buffer = new StringBuffer(); while ((ch = isInputStream.read()) != -1) { buffer.append((char) ch); } Log.i(TAG, "GetDataFromServer>" + buffer.toString()); return buffer.toString(); } else { return "404error"; }
} catch (SocketTimeoutException e) {
return "timeouterror";
} catch (IOException e) {
// TODO Auto-generated catch block return "404error";
} }
/**
- set Cookie
@param response */ private static void setCookie(HttpResponse response) { if (response.getHeaders("Set-Cookie").length > 0) {
Log.d(TAG, response.getHeaders("Set-Cookie")[0].getValue()); headers[10] = new BasicHeader("Cookie", response.getHeaders("Set-Cookie")[0].getValue());
} }
/**
- check net work
- @param context
@return */ public static boolean hasNetwork(Context context) { ConnectivityManager con = (ConnectivityManager) context
.getSystemService(Context.CONNECTIVITY_SERVICE);
NetworkInfo workinfo = con.getActiveNetworkInfo(); if (workinfo == null || !workinfo.isAvailable()) {
Toast.makeText(context, "當前無網絡連接,請稍后重試", Toast.LENGTH_SHORT).show(); return false;
} return true; }
/***
- @category check if the string is null
- @return true if is null
- */
public static boolean isNull(String string) {
boolean t1 = "".equals(string);
boolean t2 = string == null;
boolean t3 = string.equals("null");
if (t1 || t2 || t3) {
} else {return true;
} } }</pre>return false;
2012 12 31 添加自定義的URLConnection請求版本
package com.su.doubanrise.util;
import java.io.BufferedOutputStream; import java.io.BufferedReader; import java.io.ByteArrayOutputStream; import java.io.DataOutputStream; import java.io.File; import java.io.FileInputStream; import java.io.FileNotFoundException; import java.io.IOException; import java.io.InputStream; import java.io.InputStreamReader; import java.io.OutputStream; import java.net.HttpURLConnection; import java.net.InetAddress; import java.net.Socket; import java.net.SocketTimeoutException; import java.net.URL; import java.net.URLConnection; import java.net.URLDecoder; import java.util.ArrayList; import java.util.HashMap; import java.util.Iterator; import java.util.Map; import java.util.Set;
import org.apache.http.Header; import org.apache.http.HttpEntity; import org.apache.http.HttpResponse; import org.apache.http.HttpStatus; 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.conn.ConnectTimeoutException; import org.apache.http.conn.params.ConnManagerParams; import org.apache.http.impl.client.DefaultHttpClient; import org.apache.http.message.BasicHeader; import org.apache.http.message.BasicNameValuePair; import org.apache.http.params.HttpConnectionParams; import org.apache.http.protocol.HTTP; import org.apache.http.util.EntityUtils;
import android.content.Context; import android.net.ConnectivityManager; import android.net.NetworkInfo; import android.util.Log; import android.widget.Toast;
import com.su.doubanrise.api.Douban; import com.su.doubanrise.api.bean.FormFile;
/**
- HttpUtil Class Capsule Most Functions of Http Operations
- @author sfshine
*/ public class HttpUtil {
private static Header[] headers = new BasicHeader[11]; private static String TAG = "HTTPUTIL"; private static int TIMEOUT = 5 * 1000; private static final String BOUNDARY = "---------------------------7db1c523809b2";
/**
在第一次授權的時候可能頭部是空需要調用這個方法初始化token */ public static void initAfterAuth() { headers[0] = new BasicHeader("Authorization", "Bearer "
+ Douban.getAccessToken());
}
/**
- Your header of http op
@return */ static { headers[0] = new BasicHeader("Authorization", "Bearer "
+ Douban.getAccessToken());
// headers[0] = new BasicHeader("Authorization", // Douban.getAccessToken()); headers[1] = new BasicHeader("Udid", ""); headers[2] = new BasicHeader("Os", ""); headers[3] = new BasicHeader("Osversion", ""); headers[4] = new BasicHeader("Appversion", ""); headers[5] = new BasicHeader("Sourceid", ""); headers[6] = new BasicHeader("Ver", ""); headers[7] = new BasicHeader("Userid", ""); headers[8] = new BasicHeader("Usersession", ""); headers[9] = new BasicHeader("Unique", ""); headers[10] = new BasicHeader("Cookie", ""); }
public static boolean delete(String murl) throws Exception { URL url = new URL(murl); HttpURLConnection conn = (HttpURLConnection) url.openConnection(); conn.setRequestMethod("DELETE"); conn.setConnectTimeout(5000); if (conn.getResponseCode() == 204) {
MLog.e(conn.toString()); return true;
} MLog.e(conn.getRequestMethod()); MLog.e(conn.getResponseCode() + ""); return false; }
/**
- Op Http get request
- @param url
- @param map
- Values to request
@return */ static public String get(String url) { return get(url, null);
}
static public String get(String url, HashMap<String, String> map) {
DefaultHttpClient client = new DefaultHttpClient(); HttpConnectionParams.setConnectionTimeout(client.getParams(), TIMEOUT); HttpConnectionParams.setSoTimeout(client.getParams(), TIMEOUT); ConnManagerParams.setTimeout(client.getParams(), TIMEOUT);
MLog.e(headers[0] + ""); String result = "ERROR"; if (null != map) {
int i = 0; for (Map.Entry<String, String> entry : map.entrySet()) { Log.i(TAG, entry.getKey() + "=>" + entry.getValue()); if (i == 0) { url = url + "?" + entry.getKey() + "=" + entry.getValue(); } else { url = url + "&" + entry.getKey() + "=" + entry.getValue(); } i++; }
} HttpGet get = new HttpGet(url); get.setHeaders(headers); Log.i(TAG, url); try {
HttpResponse response = client.execute(get); if (response.getStatusLine().getStatusCode() == HttpStatus.SC_OK) { // setCookie(response); result = EntityUtils.toString(response.getEntity(), "UTF-8"); } else { result = EntityUtils.toString(response.getEntity(), "UTF-8") + response.getStatusLine().getStatusCode() + "ERROR"; }
} catch (ConnectTimeoutException e) {
result = "TIMEOUTERROR";
}
catch (Exception e) {
result = "OTHERERROR"; e.printStackTrace();
} Log.i(TAG, "result =>" + result); return result; }
/**
- 上傳帶圖片的http請求
- @param murl網址
- @param map
- 參數對 主要不要包括圖片
- @param path
- 圖片路徑 也可以是其他格式 自行做
- @return
@throws Exception */ static public String post(String murl, HashMap<String, String> map,
String path) throws Exception {
File file = new File(path); String filename = path.substring(path.lastIndexOf("/")); // String filename = Str.md5(path); StringBuilder sb = new StringBuilder(); if (null != map) {
for (Map.Entry<String, String> entry : map.entrySet()) { sb.append("--" + BOUNDARY + "\r\n"); sb.append("Content-Disposition: form-data; name=\"" + entry.getKey() + "\"" + "\r\n"); sb.append("\r\n"); sb.append(entry.getValue() + "\r\n"); }
}
sb.append("--" + BOUNDARY + "\r\n"); sb.append("Content-Disposition: form-data; name=\"image\"; filename=\""
+ filename + "\"" + "\r\n");
sb.append("Content-Type: image/pjpeg" + "\r\n"); sb.append("\r\n");
byte[] before = sb.toString().getBytes("UTF-8"); byte[] after = ("\r\n--" + BOUNDARY + "--\r\n").getBytes("UTF-8");
URL url = new URL(murl); HttpURLConnection conn = (HttpURLConnection) url.openConnection(); conn.setRequestMethod("POST"); conn.setRequestProperty("Content-Type",
"multipart/form-data; boundary=" + BOUNDARY);
conn.setRequestProperty("Authorization",
"Bearer " + Douban.getAccessToken());
conn.setRequestProperty("Content-Length",
String.valueOf(before.length + file.length() + after.length));
conn.setRequestProperty("HOST", url.getHost()); conn.setDoOutput(true);
OutputStream out = conn.getOutputStream(); InputStream in = new FileInputStream(file);
out.write(before);
byte[] buf = new byte[1024]; int len; while ((len = in.read(buf)) != -1)
out.write(buf, 0, len);
out.write(after);
in.close(); out.close(); MLog.i("result=>" + inputStream2String(conn.getInputStream()) + ""); if (conn.getResponseCode() == HttpStatus.SC_OK) {
return inputStream2String(conn.getInputStream());
} else {
return inputStream2String(conn.getInputStream()) + "Code" + conn.getResponseCode();
}
}
/**
- is轉String
- @param in
- @return
@throws IOException */ public static String inputStream2String(InputStream in) throws IOException { StringBuffer out = new StringBuffer(); byte[] b = new byte[4096]; for (int n; (n = in.read(b)) != -1;) {
out.append(new String(b, 0, n));
} return out.toString(); }
/**
- Op Http post request , "404error" response if failed
- @param url
- @param map
- Values to request
@return */
static public String post(String url, HashMap<String, String> map) {
DefaultHttpClient client = new DefaultHttpClient(); HttpConnectionParams.setConnectionTimeout(client.getParams(), TIMEOUT); HttpConnectionParams.setSoTimeout(client.getParams(), TIMEOUT); ConnManagerParams.setTimeout(client.getParams(), TIMEOUT); HttpPost post = new HttpPost(url); Log.i(TAG, url); MLog.e(headers[0] + ""); post.setHeaders(headers); String result = "ERROR"; ArrayList<BasicNameValuePair> pairList = new ArrayList<BasicNameValuePair>(); if (map != null) {
for (Map.Entry<String, String> entry : map.entrySet()) { Log.i(TAG, entry.getKey() + "=>" + entry.getValue()); BasicNameValuePair pair = new BasicNameValuePair( entry.getKey(), entry.getValue()); pairList.add(pair); }
} try {
HttpEntity entity = new UrlEncodedFormEntity(pairList, "UTF-8"); post.setEntity(entity); HttpResponse response = client.execute(post); if (response.getStatusLine().getStatusCode() == HttpStatus.SC_OK) { result = EntityUtils.toString(response.getEntity(), "UTF-8"); } else { result = EntityUtils.toString(response.getEntity(), "UTF-8") + response.getStatusLine().getStatusCode() + "ERROR"; }
} catch (ConnectTimeoutException e) {
result = "TIMEOUTERROR";
}
catch (Exception e) {
result = "OTHERERROR"; e.printStackTrace();
} Log.i(TAG, "result =>" + result); return result; }
/**
- 自定義的http請求可以設置為DELETE PUT等而不是GET
- @param url
- @param params
- @param method
@throws IOException */
public static void customrequest(String url,
HashMap<String, String> params, String method) throws IOException {
URL postUrl = new URL(url); HttpURLConnection conn = (HttpURLConnection) postUrl.openConnection(); conn.setDoOutput(true); conn.setDoInput(true); conn.setConnectTimeout(5 * 1000); conn.setRequestProperty("Authorization",
"Bearer " + Douban.getAccessToken());
conn.setRequestMethod(method); conn.setUseCaches(false); conn.setInstanceFollowRedirects(true); conn.setRequestProperty("Content-Type",
"application/x-www-form-urlencoded");
conn.connect(); OutputStream out = conn.getOutputStream(); StringBuilder sb = new StringBuilder(); if (null != params) {
int i = params.size(); for (Map.Entry<String, String> entry : params.entrySet()) { if (i == 1) { sb.append(entry.getKey() + "=" + entry.getValue()); } else { sb.append(entry.getKey() + "=" + entry.getValue() + "&"); } i--; }
} String content = sb.toString(); System.out.print(content); out.write(content.getBytes("UTF-8")); out.flush(); out.close(); InputStream inStream = conn.getInputStream(); String result = inputStream2String(inStream); System.out.println(result); conn.disconnect(); }
/**
- 豆瓣必須嚴格限制get請求所以增加這個方法 這個方法也可以自定義請求
- @param url
- @param method
@throws Exception */
public static void customrequestget(String url,
HashMap<String, String> map, String method) throws Exception {
if (null != map) {
int i = 0; for (Map.Entry<String, String> entry : map.entrySet()) { if (i == 0) { url = url + "?" + entry.getKey() + "=" + entry.getValue(); } else { url = url + "&" + entry.getKey() + "=" + entry.getValue(); } i++; }
} URL murl = new URL(url); System.out.print(url); HttpURLConnection conn = (HttpURLConnection) murl.openConnection(); conn.setConnectTimeout(5 * 1000); conn.setRequestMethod(method); conn.setRequestProperty("Authorization",
"Bearer " + Douban.getAccessToken());
InputStream inStream = conn.getInputStream(); String result = inputStream2String(inStream); System.out.println(result); conn.disconnect(); }
/**
- Post Bytes to Server
- @param url
- @param bytes
- of text
@return */ public static String PostBytes(String url, byte[] bytes) { try {
URL murl = new URL(url); final HttpURLConnection con = (HttpURLConnection) murl .openConnection(); con.setDoInput(true); con.setDoOutput(true); con.setUseCaches(false); con.setRequestMethod("POST"); con.setRequestProperty("Connection", "Keep-Alive"); con.setRequestProperty("Charset", "UTF-8"); con.setRequestProperty("Content-Type", "text/html"); String cookie = headers[10].getValue(); if (!isNull(headers[10].getValue())) { con.setRequestProperty("cookie", cookie); } con.setReadTimeout(TIMEOUT); con.setConnectTimeout(TIMEOUT); Log.i(TAG, url); DataOutputStream dsDataOutputStream = new DataOutputStream( con.getOutputStream()); dsDataOutputStream.write(bytes, 0, bytes.length); dsDataOutputStream.close(); if (con.getResponseCode() == HttpStatus.SC_OK) { InputStream isInputStream = con.getInputStream(); int ch; StringBuffer buffer = new StringBuffer(); while ((ch = isInputStream.read()) != -1) { buffer.append((char) ch); } Log.i(TAG, "GetDataFromServer>" + buffer.toString()); return buffer.toString(); } else { return "404error"; }
} catch (SocketTimeoutException e) {
return "timeouterror";
} catch (IOException e) {
// TODO Auto-generated catch block return "404error";
} }
/**
- set Cookie
@param response */ private static void setCookie(HttpResponse response) { if (response.getHeaders("Set-Cookie").length > 0) {
Log.d(TAG, response.getHeaders("Set-Cookie")[0].getValue()); headers[10] = new BasicHeader("Cookie", response.getHeaders("Set-Cookie")[0].getValue());
} }
/**
- check net work
- @param context
@return */ public static boolean hasNetwork(Context context) { ConnectivityManager con = (ConnectivityManager) context
.getSystemService(Context.CONNECTIVITY_SERVICE);
NetworkInfo workinfo = con.getActiveNetworkInfo(); if (workinfo == null || !workinfo.isAvailable()) {
Toast.makeText(context, "當前無網絡連接,請稍后重試", Toast.LENGTH_SHORT).show(); return false;
} return true; }
/***
- @category check if the string is null
- @return true if is null
- */
public static boolean isNull(String string) {
boolean t1 = "".equals(string);
boolean t2 = string == null;
boolean t3 = string.equals("null");
if (t1 || t2 || t3) {
} else {return true;
} } }</pre>return false;