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());
}
});

最新文章

  1. [LeetCode] 3Sum Closest 最近三数之和
  2. fastq-dump 报错 解决方案
  3. MVC学习笔记----缓存
  4. HTML中图片添加
  5. ASP.NET保存信息总结(Application、Session、Cookie、ViewState和Cache等) ZT
  6. js 毫秒 转 时间 日期 yyyy-mm-dd hh-mm-ss
  7. 【转】从零开始编写自己的C#框架(7)——需求分析
  8. 寻找子串位置 codevs 1204
  9. Eclipse配色插件
  10. 【基础】常用的机器学习&数据挖掘知识点
  11. NFS+sersync+Keepalived高可用方案
  12. Windows10下的docker安装与入门 (二)使用docker引擎在容器中运行镜像
  13. 背景重复样式background-repeat
  14. IDEA启动项目内存溢出
  15. FormData介绍
  16. asp.net web api 跨域,带cookie
  17. Teamviewer 手机端怎么拖动窗口,选中文字
  18. 在IOS 模拟器中 输入中文
  19. autocomplete 属性 清除input框输入存留历史值,防止下拉历史值显示
  20. 用ping命令简单的测试 延时、抖动、丢包率

热门文章

  1. shell之获取终端信息
  2. 【mysql】mysql存储引擎
  3. 深入理解JVM(3)——类加载机制
  4. macOS修改Dock隐藏速度
  5. Cucumber常用关键字
  6. host-only局域网络
  7. Pandas系列(十六)- 你需要学会的骚操作
  8. 验证性控件的使用--验证两个文本框至少有一个不为空CustomValidator
  9. 新年 flag
  10. [物理学与PDEs]第5章第2节 变形的描述, 应变张量 2.2 Cauchy - Green 应变张量