目录
前言:
此博客为Okhttp3+jfinal 3.5 的整合 的简单介绍。
通过本篇博客可以了解认识到基础知识:
- okhttp 是什么
- jfinal 是什么
- jfinal 3.5 的基本配置
- android 网络框架 okhttp的简单应用。
网络请求框架的发展:
- HttpURLConnection—>Apache HTTP Client—>Volley—->okHttp--->retrofit
- RxJava2+Okhttp3+Retrofit2的整合
Okhttp定义:
一个处理网络请求的开源项目,是安卓端最火热的轻量级框架,由移动支付Square公司贡献(该公司还贡献了Picasso) [2]
用于替代HttpUrlConnection和Apache HttpClient(android API23 6.0里已移除HttpClient,现在已经打不出来)
okhttp 优势:
- 允许连接到同一个主机地址的所有请求,提高请求效率 [3]
- 共享Socket,减少对服务器的请求次数 [3]
- 通过连接池,减少了请求延迟 [3]
- 缓存响应数据来减少重复的网络请求 [4]
- 减少了对数据流量的消耗 [3]
- 自动处理GZip压缩 [3]
Jfinal 定义:
JFinal 是基于Java 语言的极速 web 开发框架,其核心设计目标是开发迅速、代码量少、学习简单、功能强大、轻量级、易扩展、Restful。在拥有Java语言所有优势的同时再拥有ruby、python等动态语言的开发效率。
反正很简单。
史上最简单的server搭建过程。
如图,直接导入1个jar包,创建web 项目。
- 创建 MyConfig配置类。
- 创建一个最简单的hellocontroller类。
- 配置web.xml
package com.twc.htp.config;
import com.jfinal.config.Constants;
import com.jfinal.config.Handlers;
import com.jfinal.config.Interceptors;
import com.jfinal.config.JFinalConfig;
import com.jfinal.config.Plugins;
import com.jfinal.config.Routes;
import com.jfinal.template.Engine;
import com.twc.htp.controller.HelloController;
public class MyConfig extends JFinalConfig {
@Override
public void configConstant(Constants me) {
me.setDevMode(true);
}
@Override
public void configEngine(Engine me) {
}
@Override
public void configHandler(Handlers me) {
}
@Override
public void configInterceptor(Interceptors me) {
}
@Override
public void configPlugin(Plugins me) {
}
@Override
public void configRoute(Routes me) {
me.add("/", HelloController.class);
}
}
package com.twc.htp.controller;
import com.jfinal.core.Controller;
public class HelloController extends Controller {
public void index() {
renderText("Hello JFinal World.");
}
}
<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns="http://xmlns.jcp.org/xml/ns/javaee"
xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_3_1.xsd"
id="WebApp_ID" version="3.1">
<display-name>HTPro</display-name>
<welcome-file-list>
<welcome-file>index.html</welcome-file>
<welcome-file>index.htm</welcome-file>
<welcome-file>index.jsp</welcome-file>
<welcome-file>default.html</welcome-file>
<welcome-file>default.htm</welcome-file>
<welcome-file>default.jsp</welcome-file>
</welcome-file-list>
<filter>
<filter-name>jfinal</filter-name>
<filter-class>com.jfinal.core.JFinalFilter</filter-class>
<init-param>
<param-name>configClass</param-name>
<param-value>com.twc.htp.config.MyConfig</param-value>
</init-param>
</filter>
<filter-mapping>
<filter-name>jfinal</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
</web-app>
最后配置到Tomcat8.5,直接跑起来。
搞掂服务器了。
创建Android项目:
//网络请求。
implementation 'com.squareup.okhttp3:okhttp:3.11.0'
同步get请求:
/**
* 同步get 请求。
*
* @param url
* @return
*/
public static String getUrl(String url) {
OkHttpClient client = new OkHttpClient();
Request request = new Request.Builder().url(url).build();
Response response = null;
String message = null;
try {
response = client.newCall(request).execute();
message = response.body().string();
} catch (IOException e) {
e.printStackTrace();
}
return message;
}
异步get 请求:
/**
* 异步get。
* @param url
* @return
*/
public static Response getAsyncUrl(String url) {
OkHttpClient client = new OkHttpClient();
Request request = new Request.Builder().url(url).build();
client.newCall(request).enqueue(new Callback() {
@Override
public void onFailure(Call call, IOException e) {
}
@Override
public void onResponse(Call call, Response response) throws IOException {
Log.e("response", response.body().string().toString());
}
});
return null;
}
Okhttp3超时相关:
client.newBuilder().connectTimeout(10, TimeUnit.SECONDS);
client.newBuilder().readTimeout(10,TimeUnit.SECONDS);
client.newBuilder().writeTimeout(10,TimeUnit.SECONDS);
同步Post ,异步Post,上传下载,网络框架封装。 下篇博客补上。
服务器地址:https://gitee.com/74q/HTPro