您的位置:首页 > 理论基础 > 计算机网络

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  请求
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
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  OkHttp android studio