JSON

Wizzers World(8)

字号+ 作者:H5之家 来源:H5之家 2016-07-02 10:00 我要评论( )

第一步:编写插件类package cn.xuetang.plugin;import android.widget.Toast;import org.apache.cordova.CallbackContext;import org.apache.cordova.CordovaInterface;import org.apache.cordova.CordovaPlugin;im

第一步:编写插件类 package cn.xuetang.plugin; import android.widget.Toast; import org.apache.cordova.CallbackContext; import org.apache.cordova.CordovaInterface; import org.apache.cordova.CordovaPlugin; import org.json.JSONArray; import org.json.JSONException; /** * Created by Wizzer on 14-8-28. */ public class ToastPlugin extends CordovaPlugin { public ToastPlugin() { } public boolean execute(String action, JSONArray args, CallbackContext callbackContext) throws JSONException { if (this.cordova.getActivity().isFinishing()) return true; if (action.equals("show")) { this.show(args.getString(0)); } else if (action.equals("showlong")) { this.showlong(args.getString(0)); } else { return false; } callbackContext.success(); return true; } public void show(String message) { Toast.makeText(this.cordova.getActivity(), Toast.LENGTH_SHORT).show(); } public void showlong(String message) { Toast.makeText(this.cordova.getActivity(), message, Toast.LENGTH_LONG).show(); } }

 

第二步:配置 res/xml/config.xml <feature> <param value="cn.xuetang.plugin.ToastPlugin" /> </feature>

注:这里的 feature name ,要和↓↓面讲的的js文件里一致。

 

第三步:创建js文件 plugins/toast.js /** * Created by Wizzer on 14-8-28. */ cordova.define("cn.xuetang.plugin.ToastPlugin", function(require, exports, module) { var exec = require('cordova/exec'); module.exports = { /** * 一共5个参数 第一个 :成功回调 第二个 :失败回调 第三个 :将要调用的类的配置名字(在config.xml中配置↑↑) 第四个 :调用的方法名(一个类里可能有多个方法 靠这个参数区分) 第五个 :传递的参数 以json的格式 */ show: function(message) { exec(null, null, "ToastPlugin", "show", [message]); }, showlong: function(message) { exec(null, null, "ToastPlugin", "showlong", [message]); } }; });

注:js里两个方法,分别对应类中的两个方法

 

第四步:修改cordova_plugins.js 引用 tocas.js

在module.exports = [ ] 中追加如下代码:

{ "file": "plugins/toast.js", "id": "cn.xuetang.plugin.ToastPlugin", "merges": [ "navigator.toast" ] }

 

最后:调用 navigator.toast.show("再点击一次退出"); navigator.toast.showlong("再点击一次退出");

 

 

 

2014八月28

Cordova:连续按两次返回键退出程序

/** * Created by Wizzer on 14-8-28. */ var num = 0; var login = { initialize: function () { this.bindEvents(); }, bindEvents: function () { document.addEventListener('backbutton', this.eventBackButton, false); }, eventBackButton: function () { num++; if (num > 1) { navigator.app.exitApp(); } navigator.toast.show("再点击一次退出"); // 3秒后重新计数 var intervalID = window.setInterval(function() { num=0; window.clearInterval(intervalID); }, 3000); } };

浮动提示插件见:
?p=3026

2014八月26

Java:乱码字符不能插入MySQL的解决办法

 

 

.replaceAll(“[^a-zA-Z_\u4e00-\u9fa5]”, “”)

 

只剩下中文和英文字母了,悲催。

 

 

Causedby:java.sql.SQLException:Incorrectstringvalue:‘\xF0\x9F\x98\xB7’forcolumn‘description’

2014七月8

JAVA:网易微博模拟登陆

网易微博登陆验证,第一次请求使用BASE64加密、第二次请求使用MD5+RSA加密,比较变态,于是使用JAVA+JS相结合的方式,调用其JS方法得到加密字符串。

/core1.7.0.js 是经过处理的,删掉几行在JAVA引用中会报错的浏览器对象。

 

import org.apache.http.HttpResponse; import org.apache.http.client.CookieStore; import org.apache.http.client.methods.HttpGet; import org.apache.http.impl.client.DefaultHttpClient; import org.apache.velocity.util.StringUtils; import org.nutz.lang.Files; import org.nutz.lang.util.ClassTools; import org.nutz.repo.Base64; import javax.script.Invocable; import javax.script.ScriptEngine; import javax.script.ScriptEngineManager; import java.io.BufferedReader; import java.io.InputStream; import java.io.InputStreamReader; /** * Created by Wizzer on 14-7-7. */ public class Netease { static String index_url = "http://t.163.com/session"; static String login1_url = "http://reg.163.com/services/httpLoginExchgKeyNew"; static String login2_url = "http://reg.163.com/httpLoginVerifyNew.jsp"; static String status_url = "http://t.163.com/share/check/status"; UrlUtil urlUtil = new UrlUtil(); public static void main(String[] args) { CookieStore cookieStore = new Netease().login("email", "password"); } public CookieStore login(String userid, String password) { try { DefaultHttpClient client = new DefaultHttpClient(); HttpGet get = new HttpGet(login1_url + "?rnd=" + Base64.encodeToString(userid.getBytes(), true) + "&jsonp=setLoginStatus"); get.setHeader("Accept", "*/*"); get.setHeader("User-Agent", "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/35.0.1916.153 Safari/537.36"); HttpResponse response = client.execute(get); int code = response.getStatusLine().getStatusCode(); if (code == 200) { InputStream in = response.getEntity().getContent(); BufferedReader reader = new BufferedReader(new InputStreamReader(in)); String line = "", res = ""; while (null != (line = reader.readLine())) { res += line; } System.out.println("res:::" + res); if (res.contains("200")) { String[] str = StringUtils.split(urlUtil.getStr(res, "setLoginStatus(\"", "\")"), "\\n"); String o = str[1], h = str[2]; ScriptEngineManager sem = new ScriptEngineManager(); ScriptEngine se = sem.getEngineByName("javascript"); se.eval(getJs()); String jiami = ""; if (se instanceof Invocable) { Invocable invoke = (Invocable) se; jiami = invoke.invokeFunction("getCode", password, o, h).toString(); System.out.println("jiami = " + jiami); } DefaultHttpClient client2 = new DefaultHttpClient(); client2.setCookieStore(client.getCookieStore()); HttpGet get2 = new HttpGet(login2_url + "?rcode=" + jiami + "&product=t&jsonp=setLoginStatus&savelogin=0&username=" + userid); get2.setHeader("Accept", "*/*"); get2.setHeader("User-Agent", "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/35.0.1916.153 Safari/537.36"); HttpResponse response2 = client2.execute(get2); int code2 = response2.getStatusLine().getStatusCode(); if (code2 == 200) { InputStream in2 = response2.getEntity().getContent(); BufferedReader reader2 = new BufferedReader(new InputStreamReader(in2)); String line2 = "", res2 = ""; while (null != (line2 = reader2.readLine())) { res2 += line2; } System.out.println("res2:::" + res2); if (res.contains("200")) { return client2.getCookieStore(); } } } } return null; } catch (Exception e) { e.printStackTrace(); return null; } } private String getJs() { String jscontent = Files.read(ClassTools.getClassLoader().getResource("").getPath() + "netease" + "/core1.7.0.js"); jscontent += "function getCode(p,o,h){\n" + "\t\t\t\tvar l=new RSAKey();\n" + "\t\t\t\tl.setPublic(h,o);\n" + "\t\t\t\treturn l.encrypt(getMd5(p));\t\t\t\t\n" + " }"; return jscontent; } }

‘编程学习’ 分类下的所有文章

2014六月9

CSS:限制图片最大宽度

2014六月8

Nutz:下载文件(输出文件)

HSSFWorkbook wb = new HSSFWorkbook();
OutputStream out = new FileOutputStream(“x.xls”);
wb.write(out);
out.close();
return new File(“x.xls”);

 

 

1.本站遵循行业规范,任何转载的稿件都会明确标注作者和来源;2.本站的原创文章,请转载时务必注明文章作者和来源,不尊重原创的行为我们将追究责任;3.作者投稿可能会经我们编辑修改或补充。

相关文章
  • 用JSON API插件搭建WordPress api,返回文章列表等信息 半白色

    用JSON API插件搭建WordPress api,返回文章列表等信息 半白色

    2015-11-18 09:23

网友点评
a