添加jar包

去mave仓库中下载jar包
注意:okio包要下载1版本的,2版本的会报错,有个类找不到

封装网络请求

package sample.utils;import com.alibaba.fastjson.JSONObject;
import okhttp3.*;import java.io.IOException;
import java.lang.reflect.Proxy;
import java.util.Map;public class HttpUtil {private static String PrefixURL = "xxx"; //  //public static String uri_login="xxx";private final OkHttpClient mOkHttpClient;private volatile static HttpUtil INSTANCE;public HttpUtil() {mOkHttpClient = new OkHttpClient();}public static HttpUtil getInstance() {if (INSTANCE == null) {synchronized (HttpUtil.class) {if (INSTANCE == null) {INSTANCE = new HttpUtil();}}}return INSTANCE;}public void get(String json,String uri,HttpCallBack callBack){Request request = new Request.Builder().addHeader("Content-Type","application/json; charset=utf-8").url(PrefixURL + uri).get().build();Call call = mOkHttpClient.newCall(request);call.enqueue(new Callback() {@Overridepublic void onFailure(Call call, IOException e) {System.out.println("IOException>>"+e.toString());}@Overridepublic void onResponse(Call call, okhttp3.Response response) throws IOException {System.out.println("response>>"+response.body());}});}public void post(Map<String,String> map, String uri, HttpCallBack callBack){FormBody.Builder builder = new FormBody.Builder();for (String in : map.keySet()) {builder.add(in, map.get(in));}RequestBody body = builder.build();Request request = new Request.Builder().addHeader("Content-Type","application/json; charset=utf-8").url(PrefixURL + uri).post(body).build();Call call = mOkHttpClient.newCall(request);call.enqueue(new Callback() {@Overridepublic void onFailure(Call call, IOException e) {}@Overridepublic void onResponse(Call call, okhttp3.Response response) throws IOException {boolean successful = response.isSuccessful();if(successful){
//                    callBack.success(response.body().string());String success = response.body().string();JSONObject jsonObject=JSONObject.parseObject(success);Boolean aBoolean = jsonObject.getBoolean("success");if(aBoolean){JSONObject data = jsonObject.getJSONObject("data");callBack.success(data.toJSONString());}else{String message = jsonObject.getString("message");if(StringUtil.isEmpty(message)){callBack.fail("请求失败");}else{callBack.fail(message);}}}else{callBack.fail("请求失败");}}});}
}

请求回调

package sample.utils;public interface HttpCallBack {void success(String success);void fail(String fail);
}

调用网络请求

  HashMap<String,String> hashMap=new HashMap<>();hashMap.put("username",userNameText);hashMap.put("password",passwordText);HttpUtil.getInstance().post(hashMap, HttpUtil.uri_login, new HttpCallBack() {@Overridepublic void success(String success) {
//                System.out.println("success>>"+success);saveUserNameAndPassword(userNameText,passwordText);saveSuccessData(success);Platform.runLater(new Runnable() { //主线程中完成 切换线程,否则会报错@Overridepublic void run() {JFXSnackbar snackbar = new JFXSnackbar(root_view);snackbar.fireEvent(new JFXSnackbar.SnackbarEvent(new JFXSnackbarLayout("登录成功")));FXMLLoader loader = new FXMLLoader();loader.setLocation(Main.class.getResource("view/main.fxml"));  //静态读取,无法获取controllertry {GridPane rootLayout = loader.load();Rectangle2D primaryScreenBounds = Screen.getPrimary().getVisualBounds(); //设置全屏Scene scene = new Scene(rootLayout, primaryScreenBounds.getMaxX(), primaryScreenBounds.getMaxY());primaryStage.setMaximized(true);primaryStage.setScene(scene); //设置新界面} catch (IOException e) {e.printStackTrace();}}});}@Overridepublic void fail(String fail) {Platform.runLater(new Runnable() { //主线程中完成@Overridepublic void run() {JFXSnackbar snackbar = new JFXSnackbar(root_view);snackbar.fireEvent(new JFXSnackbar.SnackbarEvent(new JFXSnackbarLayout(fail)));}});}});}

保存数据的方法

  /*** 保存登录成功的数据,这里将数据保存到Properties文件中,方式如下保存用户名密码类似* @param success*/private void saveSuccessData(String success) {}

保存用户名密码

 /*** 记住密码*@param loginName* @param passWord*/private void saveUserNameAndPassword(String loginName, String passWord) {Properties prop = new Properties();try {FileOutputStream oFile = new FileOutputStream("user.properties", false);prop.setProperty(loginName, passWord);prop.store(oFile, null);oFile.close();} catch (Exception e) {e.printStackTrace();}}/*** 还原密码*/public void initialize() {Properties prop = new Properties();try {File file = new File("user.properties");boolean exists = file.exists();if (exists) {InputStream in = new BufferedInputStream(new FileInputStream("user.properties"));prop.load(in);Iterator<String> it = prop.stringPropertyNames().iterator();while (it.hasNext()) {String key = it.next();userName.setText(key);password.setText(prop.getProperty(key));}in.close();}} catch (Exception e) {e.printStackTrace();}}

结果

点击登录后,成功,跳转到新的界面

javafx 五、网络请求相关推荐

  1. Vue(五)Vue中的网络请求(使用Vue脚手架发送Axios请求)

    一.Axios         1.定义:利用ES6提供的Promise方式,把AJAX进行了封装.我们在Vue中发送网络请求,基本上就是使用Axios 需要安装第三方的Axios模块,才能使用    ...

  2. iOS 中的网络请求 (同步请求、异步请求、GET请求、POST请求)

    1.同步请求可以从因特网请求数据,一旦发送同步请求,程序将停止用户交互,直至服务器返回数据完成,才可以进行下一步操作, 2.异步请求不会阻塞主线程,而会建立一个新的线程来操作,用户发出异步请求后,依然 ...

  3. 如何独立开发一个网络请求框架

    (原创出处为本博客:http://www.cnblogs.com/linguanh/) 目录:   前言 准备工作  开发模式 开发原则 线程 高并发 TCP/UDP 本类介绍  开发选择 功能列表 ...

  4. Anroid-async-http封装网络请求框架源码分析

    Android-async-http开源项目可以是我们轻松的获取网络数据或者向服务器发送数据,使用起来非常简单, 这个网络请求库是基于Apache HttpClient库之上的一个异步网络请求处理库, ...

  5. 一款基于RxJava2+Retrofit2实现简单易用的网络请求框架

    本库是一款基于RxJava2+Retrofit2实现简单易用的网络请求框架,结合android平台特性的网络封装库,采用api链式调用一点到底,集成cookie管理,多种缓存模式,极简https配置, ...

  6. ajax jq 图片上传请求头_全面分析前端的网络请求方式:Ajax ,jQuery ,axios,fetch

    链接:https://juejin.im/post/5c9ac607f265da6103588b31 一.前端进行网络请求的关注点 大多数情况下,在前端发起一个网络请求我们只需关注下面几点: 传入基本 ...

  7. android retrofit2.0 rxjava2,Android - 网络请求之 Retrofit2 + RxJava

    老婆保佑,代码无BUG 目录 引用 与其他开源请求库对比 Retrofit注解 使用 GET请求 POST请求 Retrofit2 + RxJava 基础使用 优化 封装Retrofit2 + RxJ ...

  8. Java生鲜电商平台-SpringCloud微服务架构中网络请求性能优化与源码解析

    Java生鲜电商平台-SpringCloud微服务架构中网络请求性能优化与源码解析 说明:Java生鲜电商平台中,由于服务进行了拆分,很多的业务服务导致了请求的网络延迟与性能消耗,对应的这些问题,我们 ...

  9. iOS网络请求认证挑战

    一.引言 Http请求中认证挑战相关的代理如下: 1.将要发送一个认证挑战的请求 - connection:willSendRequestForAuthenticationChallenge: 2.是 ...

  10. java http 异步请求框架_GitHub - huangdali/MyHttpUtils: 一个非常好用的异步网络请求框架...

    轻量级网络请求框架MyHttputils 一.前言 本版代码大换血,使用了策略模式和构造模式来组织代码,增加了更加人性化的请求构造,代码质量提高.效率显著提升.(但是使用风格基本没变哦) 2.0.2版 ...

最新文章

  1. Algorand 共识算法 BA* 入门
  2. Docker容器的生命周期管理
  3. mac下android环境搭建笔记(android studio)
  4. Jin Ge Jin Qu hao UVA - 12563 (劲歌金曲)01背包,求装入的东西最多(相同多时价值大)
  5. win10 解决升级 WordPress 时提示”另一更新正在进行”
  6. kafka exporter v0.3.0 发布: Prometheus官方推荐,欢迎试用
  7. 百世快递收到纽交所退市警告!国内业务已68亿“卖身”
  8. Tomcat下载与安装
  9. Excel文件输出到浏览器
  10. U盘刻录ubuntu系统
  11. windows10系统瘦身记
  12. 看完即会,抓取微信小程序数据包教程
  13. 局域网内如何把文件夹共享
  14. 小米电视看普通电视台,只需几步就能轻松解锁
  15. 360cdn能挡住cc攻击_揭秘为何使用CDN后一但被cc攻击网站就瘫痪的真正原因?
  16. pytorch实现word_embedding(negative_sampling的skip-gram模型)
  17. Scratch 被禁止访问;Linux 内核历史报告2020 等开源之道每周评论2020 09 15
  18. raft 有关竞选超时 vs 心跳超时的疑惑
  19. 洛谷-P2198 杀蚂蚁
  20. 奥运会男篮赛场上,命中率最高的是机器人?

热门文章

  1. 上升沿判断语句_股票上升趋势中回调买入技巧,强势股顺势横盘突破买入法
  2. Lesson 12 Goodbye and good luck 再见,一路顺风
  3. 第四周-C语言 圆柱体表面积计算
  4. 10月20日前!武汉市科技成果转化中试平台(基地)备案申报条件及流程梳理
  5. 跨站点请求伪造攻击的原理及防御
  6. 网页游戏的项目设计方案分享
  7. 一些框架图的色彩搭配
  8. python图表导入word_使用python matplotlib 画图导入到word中如何保证分辨率
  9. [建筑设计].TLF-SOFT-SOFTPLAN.V13.33.bin Flaresim
  10. 机器学习之One-Hot Encoding详解