需求介紹
相信大家在請(qǐng)求接口的時(shí)候,很多時(shí)候都是需要傳參的,除了業(yè)務(wù)必要的字段外,還有一些恒定不變的字段,包括一些用來編碼的固定字段。這些固定字段的值我們是不能直接寫在項(xiàng)目工程中的。防止被別人反編譯,抓包獲取后,惡意請(qǐng)求,抓取我們的用戶數(shù)據(jù)。
老規(guī)矩,先上圖:

解決方法
這時(shí)候我們就可以利用Jni(Java Native Interface)來存儲(chǔ)我們這些常量值,雖然也不是最安全的方式,但是也增加了反編譯和抓包的難度。相對(duì)來說還是安全一點(diǎn)的。
具體做法就是:
① 新建一個(gè)工程,包名和你需要調(diào)用Jni的工程一樣
② 在/src/main/路徑下面新建一個(gè)jni目錄,順便新建一個(gè)c文件
③ 在c文件中寫入相關(guān)代碼
這里針對(duì)第三步,該如何存儲(chǔ)重要字段值,具體代碼如下:
#include <jni.h>//格式為:Java_包名_類名_函數(shù)名(方法名)(調(diào)用jni的類的包名)JNIEXPORT jstring JNICALLJava_com_anxindeli_anxincow_tools_JniTool_strFromJni(JNIEnv *env, jclass type) { return (*env)->NewStringUTF(env, "anxindeli_cow_ysdss_30ccoaea04e");}調(diào)用該so庫(kù)的java類目錄必須是

否則會(huì)調(diào)用不成功的。
JniTool代碼:
public class JniTool { static { System.loadLibrary("str-jni"); } public static native String strFromJni();}最后在Java中調(diào)用
JniTool.strFromJni()
就這樣簡(jiǎn)單的一句就可以了。。。
以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持VEVB武林網(wǎng)。
新聞熱點(diǎn)
疑難解答
圖片精選
網(wǎng)友關(guān)注