当前位置: 首页 > news >正文

java response 调用js_java httpclient 请求的response为text/javascript,如何处理响应的js对象?...

最后做出来了,但是没有特别满意

package com.honey.js;

import java.io.File;

import java.io.IOException;

import java.text.SimpleDateFormat;

import java.util.Date;

import java.util.Map;

import java.util.regex.Matcher;

import java.util.regex.Pattern;

import javax.script.ScriptException;

import org.apache.commons.io.FileUtils;

import org.mozilla.javascript.Context;

import org.mozilla.javascript.Scriptable;

import com.google.common.base.Charsets;

import com.google.gson.Gson;

import com.google.gson.reflect.TypeToken;

public class JavaScriptResponse {

private static final String regex = "(new\\s+Date\\([0-9,]+\\))";

private static final String df = "yyyy-MM-dd HH:mm:ss";

public static void main(String[] args) throws IOException, ScriptException {

String resp = FileUtils.readFileToString(new File("resp.js"), Charsets.UTF_8.toString());

System.out.println(resp);

//正则部分

Pattern p = Pattern.compile(regex);

System.out.println(p.pattern());

Matcher m = p.matcher(resp);

StringBuffer sb = new StringBuffer();

while(m.find()) {

Date date = convert(m.group(1));

String str = "'" + formatDate(date)+"'";

m.appendReplacement(sb, str);

}

m.appendTail(sb);

String ret = sb.toString();

System.out.println(ret);

Gson gson = new Gson();

Map myMap = gson.fromJson(ret, new TypeToken>(){}.getType());

System.out.println(myMap);

}

private static String formatDate(Date date) {

SimpleDateFormat sdf = new SimpleDateFormat(df);

return sdf.format(date);

}

private static Date convert(String text) {

try {

Context cx = Context.enter();

Scriptable scope = cx.initStandardObjects();

Object result = cx.evaluateString(scope, text, "", 1, null);

Date date = (Date) Context.jsToJava(result, Date.class);

return date;

} finally {

Context.exit();

}

}

}

一些maven依赖

org.apache.commons

commons-io

1.3.2

org.mozilla

rhino

1.7.7.1

com.google.code.gson

gson

2.8.1

相关文章:

  • java doublebuffer_Java中的DoubleBufferallocate()方法
  • 银联数据服务中心java工程师面试_中国银联JAVA开发工程师面试经验|面试题 - 职朋职业圈...
  • java调用datastage_Datastage重启服务
  • mysql中mapping标签的作用_MyBatis全局配置文件标签详解
  • python编写字典库_Python绘图Turtle库详解
  • go解析mysql binlog_一个应用它提取MySQL binlog,解析binlog并将增量更新数据推送到不同的接收器...
  • java运行时读取注解_Java自定义注解和运行时靠反射获取注解
  • java long polling_如何在Spring Boot应用程序中实现Long Polling REST endpoints ?
  • java获取其他线程的错误_java多线程开发容易犯的错误
  • java 检索数据_java代码实现搜索elasticsearch索引数据
  • java非异步线程池_Spring Boot利用@Async异步调用:ThreadPoolTaskScheduler线程池的优雅关闭详解...
  • mongo java driver 3.2_MongoDB-JAVA-Driver 3.2版本常用代碼全整理(2) - 查詢
  • java中标记怎么用_在Java中使用标记(标签)
  • java结束sql链接_数据查询时报出java.sql.SQLException: 关闭的连接
  • java 控制台画表格_Java库在控制台上构建和打印表格?
  • 《Javascript高级程序设计 (第三版)》第五章 引用类型
  • 【翻译】Mashape是如何管理15000个API和微服务的(三)
  • AHK 中 = 和 == 等比较运算符的用法
  • download使用浅析
  • iOS帅气加载动画、通知视图、红包助手、引导页、导航栏、朋友圈、小游戏等效果源码...
  • Mocha测试初探
  • storm drpc实例
  • Theano - 导数
  • Transformer-XL: Unleashing the Potential of Attention Models
  • vue2.0项目引入element-ui
  • Webpack 4 学习01(基础配置)
  • 仿天猫超市收藏抛物线动画工具库
  • 工作手记之html2canvas使用概述
  • 将 Measurements 和 Units 应用到物理学
  • 理清楚Vue的结构
  • 前端自动化解决方案
  • 浅谈Golang中select的用法
  • 为什么要用IPython/Jupyter?
  • 消息队列系列二(IOT中消息队列的应用)
  • 《码出高效》学习笔记与书中错误记录
  • 小白应该如何快速入门阿里云服务器,新手使用ECS的方法 ...
  • 整理一些计算机基础知识!
  • ​MySQL主从复制一致性检测
  • # include “ “ 和 # include < >两者的区别
  • #include
  • $.ajax,axios,fetch三种ajax请求的区别
  • (Redis使用系列) Springboot 使用redis的List数据结构实现简单的排队功能场景 九
  • (第二周)效能测试
  • (附源码)springboot 房产中介系统 毕业设计 312341
  • (附源码)springboot电竞专题网站 毕业设计 641314
  • (考研湖科大教书匠计算机网络)第一章概述-第五节1:计算机网络体系结构之分层思想和举例
  • .NET 3.0 Framework已经被添加到WindowUpdate
  • .NET Core Web APi类库如何内嵌运行?
  • .NET企业级应用架构设计系列之应用服务器
  • .Net语言中的StringBuilder:入门到精通
  • @NestedConfigurationProperty 注解用法
  • @Tag和@Operation标签失效问题。SpringDoc 2.2.0(OpenApi 3)和Spring Boot 3.1.1集成
  • [android] 看博客学习hashCode()和equals()
  • [BZOJ] 2044: 三维导弹拦截
  • [C/C++] -- 二叉树