因为我们现在大部分公司都要用新的工具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线程
}
});
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")} );