HttpConnection
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的更多相关文章
- HttpConnection方式访问网络
参考疯狂android讲义,重点在于学习1.HttpConnection访问网络2.多线程下载文件的处理 主activity: package com.example.multithreaddownl ...
- 解决ImportError: cannot import name HTTPConnection的方法
在写python程序的时候,使用from httplib import HTTPConnection,在run的时候提示ImportError: cannot import name HTTPConn ...
- python httpConnection详解
模块urllib,urllib2,httplib的区别 httplib实现了http和https的客户端协议,但是在python中,模块urllib和urllib2对httplib进行了更上层的封装. ...
- 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 ...
- HttpConnection详解【转】
HttpConnection详解[转] HttpURLConnection对象 1.从Internet获取网页,发送请求,将网页以流的形式读回来. 步骤:1)创建一个URL对象:URL url ...
- httplib:AttributeError: 'module' object has no attribute 'HTTPConnection'
# -*-coding:gb2312-*- #Function:学习python的httplib模块 import httplib conn = httplib.HTTPConnection(&quo ...
- python urllib2 httplib HTTPConnection
httplib实现了HTTP和HTTPS的客户端协议,一般不直接使用,在python更高层的封装模块中(urllib,urllib2)使用了它的http实现. import httplib conn ...
- HttpConnection的使用
项目中需要与第三方系统交互,而交互的方式是XML报文形式,所以会用到HttpConnection与第三方系统连接交互,使用起来并不复杂,但是有几点需要注意的: 1.乱码的问题解决 2.超时的设置,注意 ...
- Android使用Http协议访问网络——HttpConnection
套路篇 使用HttpConnection访问网络一般有如下的套路: 1.获取到HttpConnection的实例,new出一个URL对象,并传入目标的网址,然后调用一下openConnection() ...
随机推荐
- 主席树[可持久化线段树](hdu 2665 Kth number、SP 10628 Count on a tree、ZOJ 2112 Dynamic Rankings、codeforces 813E Army Creation、codeforces960F:Pathwalks )
在今天三黑(恶意评分刷上去的那种)两紫的智推中,突然出现了P3834 [模板]可持久化线段树 1(主席树)就突然有了不详的预感2333 果然...然后我gg了!被大佬虐了! hdu 2665 Kth ...
- BSGS与扩展BSGS
BSGS \(BSGS\)算法又称大步小步\((Baby-Step-Giant-Step)\)算法 \(BSGS\)算法主要用于解以下同余方程 \[A^x\equiv B(mod\ p)\]其中\(( ...
- grovvy身份证(全)
import java.text.DecimalFormat import java.text.SimpleDateFormat import java.util.Calendar; import j ...
- MySQL_列值为null对索引的影响_实践
一.首先看一个我在某公众号看到的一个关于数据库优化的举措 二.如果where子句中查询的列执行了 “is null” 或者 “is not null” 或者 “<=> null” 会不会使 ...
- mysql中常用的函数
-- 基本上都是抄的别人整理的 -- 一.数学函数 ABS(x) -- 返回x的绝对值 BIN(x) -- 返回x的二进制(OCT返回八进制,HEX返回十六进制) CEILING(x) -- 返回大于 ...
- 分布式监控系统开发【day37】:服务端生成配置数据(四)
一.目录结构 二.引子与代码 1.客户端获取服务列表接口 1.解决了什么问题 客户端要给我获取服务列表的的时候,他肯定要告诉他是谁?他怎么告诉我,客户端必须有一个id号 Saltsack你装一个客户端 ...
- HDU 1584(蜘蛛牌 DFS)
题意是在蜘蛛纸牌的背景下求 10 个数的最小移动距离. 在数组中存储 10 个数字各自的位置,用深搜回溯的方法求解. 代码如下: #include <bits/stdc++.h> usin ...
- 查看weblogic版本号
通过WebLogic配置文件config.xml,示例如下: # cat config.xml|grep version
- A Basic Course in Partial Differential Equations
A Basic Course in Partial Differential Equations, Qing Han, 2011 [下载说明:点击链接,等待5秒, 点击右上角的跳过广告后调至下载页面, ...
- express + restful
express http://www.expressjs.com.cn/ Express 是一个基于 Node.js 平台的极简.灵活的 web 应用开发框架,它提供一系列强大的特性,帮助你创建各种 ...