OkHttp的相关
2016-06-25 18:40
357 查看
因为我们现在大部分公司都要用新的工具Android studio 下面 介绍好用的 网络请求OkHttp
1:要用OkHttp 得先导包 包下载地址 okhttp
he latest JAR 和okio
the latest JAR
废话不多说 看代码
2:一般的get 请求
//创建OkHTTPClient对象
OkHttpClient ok=new OkHttpClient();
//创建一个Request对象
Request re=new Request.Builder().url(path).build();
//开始请求
ok.newCall(re).enqueue(new Callback() {
@Override
public void onFailure(Request request, IOException e) {
}
@Override
public void onResponse(Response response) throws IOException {
// 一:如果先字符串可以的话 就用这个 一行搞定 默认 我是注掉了 因为大多数 都是乱码 所以果断用第 二中
// String str=response.body().toString();
// 二:如果 是乱码之类的 不正常的 就用字节流转换下
InputStream in=response.body().byteStream();
int a;
char[] ch=new char[1024];
//在这里 如果乱码 可以换 gbk utf-8 之类的 切换
InputStreamReader ins=new InputStreamReader(in,"utf-8");
StringBuffer sb=new StringBuffer();
while((a=ins.read(ch))!=-1){
sb.append(new String(ch,0,a));
}
String str=sb.toString();
System.out.print(sb.toString());
Log.d("读取内容是",sb.toString());
}
});
3:post 请求
//创建OkHTTPClient对象
OkHttpClient ok=new OkHttpClient();
//这两行 暂时 没用到过 可以不写 暂时不懂啥意思
// Request request = buildMultipartFormRequest(
// url,new
File[]{file},new String[]{fileKey},null);
//请求参数 里边可以放 联网 需要的请求参数 如 key 等
FormEncodingBuilder builder=new FormEncodingBuilder();
builder.add("name","fanaw");
builder.add("key",key);
//创建一个Request对象
Request re=new Request.Builder().url(path).post(builder.build()).build();
//开始请求
ok.newCall(re).enqueue(new Callback() {
@Override
public void onFailure(Request request, IOException e) {
}
@Override
public void onResponse(Response response) throws IOException {
//在这里 直接借用 String 用了
String str=response.body().toString();
System.out.print(sb.toString());
Log.d("读取内容是",sb.toString());
}
});
4: 写多个请求肯定包含大量的重复代码,所以我希望封装后的代码调用是这样的:
一般的 get 请求
OkHttpClientManager.getAsyn("https://www.baidu.com",
new
OkHttpClientManager.ResultCallback<String>() {
@Override
publicvoidonError(Request
request, Exception e) {
e.printStackTrace();
}
@Override
publicvoidonResponse(String
u) {
mTv.setText(u);//注意这里是UI线程
}
});
一般的 post 请求
其实 后边这复用的
我也 没明白 先写上 慢慢实验吧
更多的 推荐 鸿祥的 介绍 http://blog.csdn.net/lmj623565791/article/details/47911083
1:要用OkHttp 得先导包 包下载地址 okhttp
he latest JAR 和okio
the latest JAR
废话不多说 看代码
2:一般的get 请求
//创建OkHTTPClient对象
OkHttpClient ok=new OkHttpClient();
//创建一个Request对象
Request re=new Request.Builder().url(path).build();
//开始请求
ok.newCall(re).enqueue(new Callback() {
@Override
public void onFailure(Request request, IOException e) {
}
@Override
public void onResponse(Response response) throws IOException {
// 一:如果先字符串可以的话 就用这个 一行搞定 默认 我是注掉了 因为大多数 都是乱码 所以果断用第 二中
// String str=response.body().toString();
// 二:如果 是乱码之类的 不正常的 就用字节流转换下
InputStream in=response.body().byteStream();
int a;
char[] ch=new char[1024];
//在这里 如果乱码 可以换 gbk utf-8 之类的 切换
InputStreamReader ins=new InputStreamReader(in,"utf-8");
StringBuffer sb=new StringBuffer();
while((a=ins.read(ch))!=-1){
sb.append(new String(ch,0,a));
}
String str=sb.toString();
System.out.print(sb.toString());
Log.d("读取内容是",sb.toString());
}
});
3:post 请求
//创建OkHTTPClient对象
OkHttpClient ok=new OkHttpClient();
//这两行 暂时 没用到过 可以不写 暂时不懂啥意思
// Request request = buildMultipartFormRequest(
// url,new
File[]{file},new String[]{fileKey},null);
//请求参数 里边可以放 联网 需要的请求参数 如 key 等
FormEncodingBuilder builder=new FormEncodingBuilder();
builder.add("name","fanaw");
builder.add("key",key);
//创建一个Request对象
Request re=new Request.Builder().url(path).post(builder.build()).build();
//开始请求
ok.newCall(re).enqueue(new Callback() {
@Override
public void onFailure(Request request, IOException e) {
}
@Override
public void onResponse(Response response) throws IOException {
//在这里 直接借用 String 用了
String str=response.body().toString();
System.out.print(sb.toString());
Log.d("读取内容是",sb.toString());
}
});
4: 写多个请求肯定包含大量的重复代码,所以我希望封装后的代码调用是这样的:
一般的 get 请求
OkHttpClientManager.getAsyn("https://www.baidu.com",
new
OkHttpClientManager.ResultCallback<String>() {
@Override
publicvoidonError(Request
request, Exception e) {
e.printStackTrace();
}
@Override
publicvoidonResponse(String
u) {
mTv.setText(u);//注意这里是UI线程
}
});
一般的 post 请求
OkHttpClientManager.postAsyn("http://192.168.1.103:8080/okHttpServer/fileUpload", //new OkHttpClientManager.ResultCallback<String>() { @Override publicvoidonError(Request request, IOException e) { e.printStackTrace(); } @Override publicvoidonResponse(String result) { } }, // file, //"mFile", //new OkHttpClientManager.Param[]{ new OkHttpClientManager.Param("username","zhy"), new OkHttpClientManager.Param("password","123")} );
其实 后边这复用的
我也 没明白 先写上 慢慢实验吧
更多的 推荐 鸿祥的 介绍 http://blog.csdn.net/lmj623565791/article/details/47911083
相关文章推荐
- Android Studio注释模板介绍
- 关于Android Studio 和 Gradle的那些事儿
- OkHttp的Interceptor原理分析
- 收藏各种技术源码
- Android Studio 使用 Gradle 打包 Jar-IT蓝豹
- Android Studio示例项目
- http缓存
- android通过okhttp访问自签名https网站(单向)
- OkHttp和Okio
- Android Studio中如何获取debug.keystore sha1证书
- Android自定义按钮点击效果
- 百度地图(一)—————让百度地图显示在自己的软件上
- Android studio开发工具开启篇
- Android Studio android.view.InflateException: Error inflating class com.baidu.mapapi.map.MapView
- Android Studio集成ShareSDK免费短信平台
- Cordova与Android之一 Activity跳转
- android studio
- Android Studio 利用Gradle打包SDK jar文件
- Android Studio配置签名
- 在sha1 keytool不是内部或外部命令 android studio