OkHttp是一个相对成熟的解决方案,据说Android4.4的源码中可以看到HttpURLConnection已经替换成OkHttp实现了。所以我们更有理由相信OkHttp的强大。
直接代码:
先添加依赖:
compile 'com.squareup.okhttp3:okhttp:3.9.1' compile 'com.google.code.gson:gson:2.7'
代码:
httpClient=new OkHttpClient.Builder() .connectTimeout(60, TimeUnit.SECONDS) //设置连接超时 .readTimeout(60, TimeUnit.SECONDS) //设置读超时 .writeTimeout(60, TimeUnit.SECONDS) //设置写超时 .retryOnConnectionFailure(true) //是否自动重连 .build();formBody = new FormBody.Builder() .add("key","ok") .add("p",s) .build();Request request = new Request.Builder() .url("网络接口") .post(formBody) .build();Call call = httpClient.newCall(request);
Call call = httpClient.newCall(request); try { call.execute(); } catch (IOException e) { e.printStackTrace(); } //请求加入调度 以异步的方式去执行请求 call.enqueue(new Callback() { @Override public void onFailure(Call call, IOException e) { //故障返回 System.out.println("请求失败"); } @Override public void onResponse(Call call, Response response) throws IOException { //响应走这方法 if(response.isSuccessful()){ System.out.println(response.code()+"================================="); System.out.println(response.body().toString()); //当获取到网络数据的时候 是能取一次:如给你一个数据你已经使用了 后面就没有数据了 //前面已经输出了数据 后面这个输出就是没有数据的 System.out.println(response.body().toString()); Gson gson = new Gson(); // Ini i = gson.fromJson(response.body().string(),Ini.class); // System.out.println(i.toString()); List persons =gson.fromJson("传给我的字符串数据(list集合)", new TypeToken<List>() { }.getType()); } else { throw new IOException("Unexpected code " + response); } } });后续会添加 OKhttp的封装与数据乱码方法