OKhttp3的使用教程
2024-09-05 01:37:05
首先在build.gradle下的dependencies下添加引用。
implementation "com.squareup.okhttp3:okhttp:4.9.0"
然后编写HttpHelper的Get和Post方法。
public class HttpHelper {
public static final OkHttpClient client = new OkHttpClient();
public static void get(String url, ICallback_Comm callback) throws IOException {
new Thread(){
@Override
public void run(){
Request request = new Request.Builder()
.url(url)
.build();
try (Response response = client.newCall(request).execute()) {
String result = response.body().string();
callback.Call(result);
} catch (IOException | ClassNotFoundException e) {
e.printStackTrace();
}
}
}.start();
}
//public static final MediaType JSON = MediaType.get("application/json; charset=utf-8");
public static final MediaType mediaType = MediaType.get("application/octet-stream; charset=utf-8");
public static void post(String url, String param, ICallback_Comm callback) throws IOException {
new Thread(){
@Override
public void run(){
RequestBody body = RequestBody.create(mediaType, param);
Request request = new Request.Builder()
.url(url)
.post(body)
.build();
try (Response response = client.newCall(request).execute()) {
String result = response.body().string();
callback.Call(result);
} catch (IOException | ClassNotFoundException e) {
e.printStackTrace();
}
}
}.start();
}
}
这里Post的MediaType设置成了application/octet-stream,因为我提交的数据是普通字符串,如果需要提交Json,则可设置为application/json。
使用HttpHelper模拟登陆。
Get:
HttpHelper.get(AppConfig.WebApiCommUrl+"?para="+URLEncoder.encode("{\"LoginName\":\"admin\",\"Password\":\"admin\"}"),con->{ });
Post:
HttpHelper.post(AppConfig.WebApiCommUrl,URLEncoder.encode("{\"LoginName\":\"admin\",\"Password\":\"admin\"}"), con->{
LoginCommandResult baseResult = JsonHelper.Deserialize(LoginCommandResult.class ,con);
if(baseResult.IsSuccess){
}
else {
runOnUiThread(()->{
ShowMessage("登录失败,"+baseResult.Message);
});
}
runOnUiThread(()->{
loginButton.setEnabled(true);
loadingProgressBar.setVisibility(View.GONE);
});
});
PS1:Android中不能在子线程中来刷新UI线程。可以使用runOnUiThread切换回UI线程,然后控制UI。
runOnUiThread(()->{
Toast.makeText(this, msg, Toast.LENGTH_SHORT).show();
});
PS1:Alt+Insert会弹出自动生成菜单,选择Getter and Setter可以自动将字段生成属性,即生成get和set的属性函数。
PS3://region和//endregion组合可以折叠代码,类似C#的#region和#endregion。
PS4:获取集合长度,java里用size函数,比如If(list.size()>0),取第一个元素用get(index)方法,如list.get(0)。
----------------------------------------------------------------------------------------------------
注:此文章为原创,任何形式的转载都请联系作者获得授权并注明出处!
若您觉得这篇文章还不错,请点击下方的【推荐】,非常感谢!
最新文章
- PHP 高级编程(5/5) - SPL 数组重载
- Linux下使用vsftp
- FZU 2105 Digits Count(位数计算)
- [中文版] 可视化 CSS References 文档
- 移动大数据时代最IN编程语言必读书单
- Scan IP relocate/failover其它段后不能ping通过
- Android简易实战教程--第十话《模仿腾讯手机助手小火箭发射详解》
- HTTP长连接和短连接 + Websocket
- node爬取html乱码
- 汉化DevExpress
- is和 == 的区别以及编码.解码
- 提取ipa里面的资源图片
- MapReduce的几个实现
- 图的最小生成树的理解和实现:Prim和Kruskal算法
- 基于Github搭建SrpingCloudConfig详解
- SSH服务登陆验证
- 每隔10秒自动更新svn 定时更新svn 脚本
- NDK版本 下载地址
- jsp的组成和执行过程
- 黑帽seo基础手法之快照劫持