1.HttpConnection 用于接受和发送网络数据

网络操作必须新开个子线程执行,否则会出现 ANR(Application Not Response) 应用无响应异常

Get:

 /**
* 通过HttpURLConnection 获取输入流
*/
public static InputStream getInputStreamFromWebSite(String path) { InputStream inputStream = null;
try {
//创建URL对象指定我们要访问的网址(路径)
URL url = new URL(path);
//创建HttpurlConnection 对象
HttpURLConnection conn = (HttpURLConnection) url.openConnection();
//设置发送 get 请求
conn.setRequestMethod("GET");
//设置请求超时时间
conn.setConnectTimeout(5000);
//访问成功
if (conn.getResponseCode() == HttpURLConnection.HTTP_OK) {
inputStream = conn.getInputStream();
} } catch (IOException e) {
e.printStackTrace();
}
return inputStream;
}

Post: 通过请求提的方式把数据传给服务器(以流的形式)

/**
* 通过HttpURLConnection 上传数据
*/
public static InputStream postDataToWebAPI(String path,String data) { InputStream inputStream = null;
try {
URL url = new URL(path);
HttpURLConnection conn = (HttpURLConnection) url.openConnection();
conn.setRequestMethod("POST");
conn.setConnectTimeout(5000);
conn.setReadTimeout(5000); //设置请求头信息
conn.setRequestProperty("Content-Type","application/x-www-form-urlencoded");
conn.setRequestProperty("Content-Length",String.valueOf(data.length())); //将拼接好的数据已流的形式提交给数据库
conn.setDoOutput(true);//设置一个标记,允许输出
conn.getOutputStream().write(data.getBytes()); int code=conn.getResponseCode();
Tools.log("ResponseCode:"+String.valueOf(code));
if (conn.getResponseCode() == HttpURLConnection.HTTP_OK) {
//获取返回结果
inputStream = conn.getInputStream();
}
conn.disconnect();
} catch (Exception e) {
e.printStackTrace();
}
return inputStream;
}

重点

  //将拼接好的数据已流的形式提交给数据库
conn.setDoOutput(true);//设置一个标记,允许输出
conn.getOutputStream().write(data.getBytes());

2. okHttp3

(1)创建 get post 方法

  /**
* 通过okHttp3 执行 get
*/
public static void getDataByOkHttp(String path, Callback callback) { //创建okHttpClient对象
OkHttpClient mOkHttpClient = new OkHttpClient();
//创建一个Request
Request request = new Request.Builder()
.url(path)
.build(); //new call
okhttp3.Call call = mOkHttpClient.newCall(request);
//请求加入调度
call.enqueue(callback);
} /**
* 通过okHttp3 执行 post
*/
public static void postDataToServerByOkHttp(String url, RequestBody formBody, Callback callback) { OkHttpClient mOkHttpClient=new OkHttpClient(); Request request=new Request.Builder()
.url(url)
.post(formBody) //数据
.build(); mOkHttpClient.newCall(request).enqueue(callback); //回调
}

(2)调用

onResponse() 方法时执行在子线程当中的

NetUtils.getDataByOkHttp(url, new Callback() {

    @Override
public void onFailure(Call call, IOException e) { } @Override
public void onResponse(Call call, Response response) throws IOException { String result=response.body().string();
}
});
       FormBody body = new FormBody.Builder()
.add("Name", name).add("PhoneNumber", phone).add("Gender", gender).add("Passwords", pwd)
.add("RoleId", "1").add("Image", image).build(); NetUtils.postDataToServerByOkHttp(APIPaths.USER_REGISTER, body, new Callback() {
@Override
public void onFailure(Call call, IOException e) { } @Override
public void onResponse(Call call, Response response) throws IOException { Log.i(TAG, "onResponse: " + response.body().string());
}
});

HttpConnection的更多相关文章

  1. HttpConnection方式访问网络

    参考疯狂android讲义,重点在于学习1.HttpConnection访问网络2.多线程下载文件的处理 主activity: package com.example.multithreaddownl ...

  2. 解决ImportError: cannot import name HTTPConnection的方法

    在写python程序的时候,使用from httplib import HTTPConnection,在run的时候提示ImportError: cannot import name HTTPConn ...

  3. python httpConnection详解

    模块urllib,urllib2,httplib的区别 httplib实现了http和https的客户端协议,但是在python中,模块urllib和urllib2对httplib进行了更上层的封装. ...

  4. HTTPConnectionPool(host='xx.xx.xx.xx', port=xx): Max retries exceeded with url:(Caused by ConnectTimeoutError(<urllib3.connection.HTTPConnection object at 0x0000015A25025EB8>...))

    HTTPConnectionPool(host='xx.xx.xx.xx', port=xx): Max retries exceeded with url:(Caused by ConnectTim ...

  5. HttpConnection详解【转】

    HttpConnection详解[转]   HttpURLConnection对象  1.从Internet获取网页,发送请求,将网页以流的形式读回来. 步骤:1)创建一个URL对象:URL url ...

  6. httplib:AttributeError: 'module' object has no attribute 'HTTPConnection'

    # -*-coding:gb2312-*- #Function:学习python的httplib模块 import httplib conn = httplib.HTTPConnection(&quo ...

  7. python urllib2 httplib HTTPConnection

    httplib实现了HTTP和HTTPS的客户端协议,一般不直接使用,在python更高层的封装模块中(urllib,urllib2)使用了它的http实现. import httplib conn  ...

  8. HttpConnection的使用

    项目中需要与第三方系统交互,而交互的方式是XML报文形式,所以会用到HttpConnection与第三方系统连接交互,使用起来并不复杂,但是有几点需要注意的: 1.乱码的问题解决 2.超时的设置,注意 ...

  9. Android使用Http协议访问网络——HttpConnection

    套路篇 使用HttpConnection访问网络一般有如下的套路: 1.获取到HttpConnection的实例,new出一个URL对象,并传入目标的网址,然后调用一下openConnection() ...

随机推荐

  1. 【bfs】麻将游戏

    题目 来自:yinzm的blog 在一种"麻将"游戏中,游戏是在一个有W*H格子的矩形平板上进行的.每个格子可以放置一个麻将牌,也可以不放(如图所示).玩家的目标是将平板上的所有可 ...

  2. Null component Catalina

    "严重: Null component Catalina:type=JspMonitor,name=jsp,WebModule="错误的解决办法 在MyEclipse10环境下启动 ...

  3. Mycat的分库分表

    其他方法: 雪花算法或者redis来实现id不重复的问题. 数据库分库分表: 垂直拆分的优缺点: 水平拆分: 分片枚举:即根据枚举(定义的常量)进行分类存储.

  4. 如何重写Java中的equals方法

    Java中,只有8种基本类型不是对象,例如:4种整形类型(byte, short, int,long),2种浮点类型(flout, double),boolean, char不是对象,其他的所有类型, ...

  5. org.hibernate.ObjectNotFoundException: No row with the given identifier exists解决办法

    hibernate-取消关联外键引用数据丢失抛异常的设置@NotFound hibernate项目里面配了很多many-to-one的关联,后台在查询数据时已经作了健全性判断,但还是经常抛出对象找不到 ...

  6. java matlab 混合编程 Failed to find the required library mclmcrrt9_2.dll on java.library.path.

    问题描述: Exception in thread "main" java.lang.UnsatisfiedLinkError: Failed to find the requir ...

  7. JN_0001:在微信朋友圈分享时长大于10s的视频

    1,先在聊天窗口里发送视频. 2,长按视频点击”收藏“. 3,进入微信收藏管理页面,播放视频. 4,点击右上角三点按钮,选择“转存为笔记”. 5,于是在收藏页面中会生成一个新的收藏笔记链接,打开链接再 ...

  8. jpa返回List<Map<String, Object>>相当于jdbctemplate的queryForlist

    public class Test(){ @PersistenceContext(unitName = "manageFactory") protected EntityManag ...

  9. java8 list转map

    //按id属性为map的key值 Map<Integer, User> userMap = list.stream().collect(Collectors.toMap(User::get ...

  10. Vue技术内幕 出去看看吧

    Vue的 Vue构造函数的出生 出生文件 ./instance/index  实例方法和属性 .global-api/index   静态方法和属性 Vue平台化包装 Web平台化 vue 初始化 m ...