================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();
- }
- }
- }
================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);
- }
- }
- }
- 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) {
- return true;
- } else {
- 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) {
- return true;
- } else {
- return false;
- }
- }
- }
来源: http://www.phpxs.com/code/1001607/