HttpURLConnection
来源:互联网 发布:qq有linux版本吗 编辑:程序博客网 时间:2024/06/10 19:29
Http学习之使用HttpURLConnection发送post和get请求
HttpURLConnection用法详解
使用HttpURLConnection发送post和get请求
android httpUrlConnection 设置cookies
HttpURLConnection实现断点下载
Http学习之使用HttpURLConnection发送post和get请求 异步
HttpURLConnection请求时使用CookieHandler,CookieManager和CookieStore获取Cookie
上传
传图片
HttpURLConnection与 CookieManager 实现Post提交请求和Cookie管理
注:应用HttpURLConnection有个大Bug,无法解决,就是报以下错k误时是没办法解决的,平时用都没问题,哪天报这种Bug时就玩完。
java.net.ProtocolException: Connection already established
本人的源码如下:
package utility;import android.content.Context;import android.graphics.BitmapFactory;import android.os.Handler;import com.heiyouhui.m.Flag;import org.json.JSONObject;import java.io.BufferedReader;import java.io.InputStreamReader;import java.net.HttpURLConnection;import java.net.URL;import java.util.List;import java.util.Map;/** * Author: jamky * Date: 2015/6/11 * Description: 主要应用于网络请求 */public class HttpUtils { /** * Http 远程请求 * @param context 非null时表示请求保持cookie同步,cookie的expires为17位utc时间格式 * @param url 可决定是否编码后再传过来, URLEncoder.encode("paramValue", "utf-8"); * @param requestMethod 请求方式:Flag.HTTP_GET , Flag.HTTP_POST * @param requestType 请求返回数据的类型:Flag.STRING , Flag.BITMAP, Flag.DOC * @param timeout 链接超时与读取超时,单位为秒 * @param handle 异步回调主体,常见代码: @Override handleMessage(Message msg); if (msg.what == 1); new Boolean(msg.obj.toString()).booleanValue(); new JSONObject(msg.obj.toString()); .setImageDrawable(new BitmapDrawable((Bitmap) msg.obj)) */ public static void Request(final Context context, final String url, final int requestMethod, final int requestType, final int[] timeout, final Handler handle){ new Thread(){ @Override public void run() { try { Object object = Request(context,url,requestMethod,requestType,timeout); handle.obtainMessage(1, object).sendToTarget(); }catch (Exception e) { handle.obtainMessage(0, null).sendToTarget(); } } }.start(); } public static Object Request(final Context context, final String url, final int requestMethod, final int requestType, final int[] timeout) throws Exception { HttpURLConnection conn = (HttpURLConnection) new URL(url).openConnection(); //链接超时与读取超时 if (null!=timeout&&timeout.length>1){ conn.setConnectTimeout(timeout[0]*1000); conn.setReadTimeout(timeout[1]*1000); } //POST请求配置 if (requestMethod == Flag.HTTP_POST){ conn.setRequestMethod("POST");//[OPTIONS, GET, HEAD, POST, PUT, DELETE, TRACE] conn.setDoOutput(true); conn.setUseCaches(false); conn.setRequestProperty("Content-Type", "application/x-www-form-urlencoded"); //设置请求跟随重定向,如请求A,A跳转到B,A会返回302状态码,设置些跟随后获取到的状态码是200 //HttpURLConnection.setFollowRedirects(true);//作用于应用程序所有实例 conn.setInstanceFollowRedirects(true);//作用于当前实例 // 以上这些要在conn.connect()之前设置 } //Cookie同步 if (null != context) { //读cookie,绑定到请求,使会话持久化 String cookiesStr = WebViewCookie.G(context, url); if (null != cookiesStr) conn.setRequestProperty("Cookie", cookiesStr); //写Cookie到本地Cookies数据库 if (conn.getResponseCode() == HttpURLConnection.HTTP_OK) { Map<String, List<String>> maps = conn.getHeaderFields(); List<String> cookies = maps.get("Set-Cookie"); if (null != cookies) WebViewCookie.C(context, cookies, url); } } // 进行连接,实际上当执行到connection.getInputStream()时才真正地发出请求 conn.connect(); //请求若是POST if (requestMethod == Flag.HTTP_POST){/* //post参数注入。实际测试post的参数直接追加在url后也是可以的 //另外,要注意的是connection.getOutputStream会隐含的进行conn.connect(),故post请求时conn.connect()也可以注释掉 DataOutputStream out = new DataOutputStream(conn.getOutputStream()); String url_param = "param=" + URLEncoder.encode("参数值", "utf-8"); out.writeBytes(url_param);// 将字符串中的16位unicode字符以8位字符形式写入流 out.flush(); out.close();*/ } Object object = null; switch (requestType){ case Flag.BITMAP: object = BitmapFactory.decodeStream(conn.getInputStream()); break; default: BufferedReader reader = new BufferedReader(new InputStreamReader(conn.getInputStream()) ); String s; StringBuilder builder = new StringBuilder(); while ((s = reader.readLine())!= null) builder.append(s); reader.close(); object = requestType==Flag.JSON? new JSONObject(builder.toString()) : builder.toString(); } conn.disconnect(); return object; }}
0 0
- HttpURLConnection
- HttpURLConnection
- HttpURLConnection
- httpurlconnection
- HttpURLConnection
- HttpURLConnection
- HttpURLConnection
- HttpURLConnection
- HttpURLConnection
- HttpURLConnection
- HttpURLConnection
- HttpURLConnection
- HttpURLConnection
- HttpURLconnection
- HttpURLConnection
- HttpURLConnection
- HttpURLConnection
- httpurlconnection
- 一个在线看android系统各个版本源码的链接
- Zookeeper架构学习(四):ZAB协议
- android_Environment类
- riot.js 学习【一】自定义标签
- 优先级队列的实现
- HttpURLConnection
- 使用VS2010时遇到的一些小问题的解决方案(从各处搜罗总结的,不定期更新,向原作者致敬)
- Uva - 10815 - Andy's First Dictionary
- UVA 10911--Forming Quiz Teams+状态压缩+记忆化搜索
- 学习
- HQL
- 项目BUG
- 杨辉三角
- 解决“Sublime Text 2”中,中文输入法不跟随的问题_PnS001