公司的项目最近需要做 HTTPS 双向认证,需要我 android 端给前端提供 HTTPS 双向认证的 RN 接口,但是遇到一个问题,就是前端传入的参数,我不知道 java 该用什么类型接收。贴一些关键代码 前端调用接口的相关代码: let androidGeetHttps = (url: string, params: object, successCallback: Function, errorCallback: Function) => { NativeModules.HttpsGo.sendHttpsRequest({ 'httpsType': 'get', 'url': url, 'parameters': params },(res) => { successCallback(res); console.log(res); },(err) => { errorCallback(err); console.log(err); }); }; 请问,对于 sendHttpsRequest 内的第一个参数我应该以什么类型接收,我尝试过 JSONObject 会报错,改成 String,前端说代码不美观。那么有没有什么办法可以既不违反前端的代码规范,Java 又能解析。
1
Mikewu 2018-02-11 17:04:23 +08:00
安卓端以 ReadableMap 接收传参就可以了
|
2
JellyBeanX OP @Mikewu 问题是,parameters 这个键对应的值是不固定的,对应到 Json 上 parameters 对应的应该是一个 JsonObject,内部可能有 id,username,password···键的名称和数量都是不固定,map 不是要先设置键吗,我该怎么解析呢
|
3
KNOX 2018-02-12 10:11:55 +08:00 via Android
我也遇到过类似的问题,Java 是强类型语言,JavaScript 是弱类型,开发时约定好了不能确定到了运行时不出幺蛾子,所以最后都是前端妥协。楼主可以强势一点
|
4
Mikewu 2018-02-12 10:16:11 +08:00 1
@JellyBeanX #2 parameters 里面对应的 key/value 应该是你和 RN 端协商好吧,至于 RN 于 Android 数据转换,帮你百度了一篇文章,https://www.jianshu.com/p/1be8da8b8b15 (其中第三段:js 和原生数据类型转换工具类)
|
5
JellyBeanX OP @KNOX 嗯嗯,明年来了跟前端喝喝茶😄
|