【android】Android网络框架---OkHttp3
1、添加依赖 compile 'com.squareup.okhttp3:okhttp:3.4.2'
project Structure-->dependencied/搜索okhttp.
compile 'com.squareup.okhttp3:okhttp:3.4.2'
2、添加权限
<uses-permission android:name="android.permission.INTERNET"/>
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
public class MainActivity extends AppCompatActivity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); } //基本请求默认GET请求 public void net1(View v){ //可以通过构造方法来使用。使用Builder模式可以设置一些属性 // OkHttpClient client = new OkHttpClient(); //缓存的请求的数据,json字符串, //Cache questCache = new Cache(new File("cache"),1024); OkHttpClient client = new OkHttpClient.Builder() //读取超时5s .readTimeout(5000, TimeUnit.MILLISECONDS) //自带缓存,缓存可做可不做,做了就是让刷新的时候方便些,不会重复去请求同一个url多次 //.cache(questCache) .build(); //默认GET请求 Request request = new Request.Builder() .url("https://www.baidu.com") .build(); //call就是我们可以执行的请求类 Call call = client.newCall(request); // try { // //同步方法,程序运行到这里会等待,所以这里我们不用这个方法 // Response execute = call.execute(); // } catch (IOException e) { // e.printStackTrace(); // } //异步请求 call.enqueue(new Callback() { @Override public void onFailure(Call call, IOException e) { Log.e("TAG","请求失败"); } @Override public void onResponse(Call call, Response response) throws IOException { //子线程 Log.e("TAG",Thread.currentThread().getName()+"---结果:"+response.body().string()); //修改UI使用 runOnUiThread();或者使用Handler发送更新UI消息给主线程 } }); //取消 // call.cancel(); } //POST请求 public void net2(View v){ OkHttpClient client = new OkHttpClient.Builder() .readTimeout(5000,TimeUnit.MILLISECONDS) .build(); //创建Form表单对象,可以add多个键值对 RequestBody body = new FormBody.Builder() .add("showapi_appid","27306") .add("showapi_sign","150e9206e7f542bab4affe49d73cb920") .build(); Request request = new Request.Builder().url("http://route.showapi.com/578-6") .post(body)//添加参数 .build(); Call call = client.newCall(request); call.enqueue(new Callback() { @Override public void onFailure(Call call, IOException e) { Log.e("TAG","请求失败"); } @Override public void onResponse(Call call, Response response) throws IOException { Log.e("TAG","---->"+response.toString()); //子线程 } }); } //文件上传 public void net3(View v){ OkHttpClient client = new OkHttpClient.Builder() .readTimeout(5000,TimeUnit.MILLISECONDS) .build(); //添加多个文件 RequestBody fileBody = MultipartBody.create(MediaType.parse("application/octet-stream"),new File("上传的文件地址")); RequestBody body = new MultipartBody.Builder() //设置为表单类型 .setType(MultipartBody.FORM) //添加表单键值 .addFormDataPart("image头像字段名称","name文件名称",fileBody) .build(); Request request = new Request.Builder() .url("http://192.168.18.250") .post(body) .build(); Call call = client.newCall(request); call.enqueue(new Callback() { @Override public void onFailure(Call call, IOException e) { } @Override public void onResponse(Call call, Response response) throws IOException { //子线程 } }); } }
参考资料:
http://www.jcodecraeer.com/a/anzhuokaifa/androidkaifa/2015/0106/2275.html
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· winform 绘制太阳,地球,月球 运作规律
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· AI与.NET技术实操系列(五):向量存储与相似性搜索在 .NET 中的实现
· 超详细:普通电脑也行Windows部署deepseek R1训练数据并当服务器共享给他人
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理