关于 Android 原生模块为 RN 提供接口的问题

2018-02-11 16:07:02 +08:00
 JellyBeanX

公司的项目最近需要做 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 又能解析。

9016 次点击
所在节点    Android
5 条回复
Mikewu
2018-02-11 17:04:23 +08:00
安卓端以 ReadableMap 接收传参就可以了
JellyBeanX
2018-02-12 09:00:55 +08:00
@Mikewu 问题是,parameters 这个键对应的值是不固定的,对应到 Json 上 parameters 对应的应该是一个 JsonObject,内部可能有 id,username,password···键的名称和数量都是不固定,map 不是要先设置键吗,我该怎么解析呢
KNOX
2018-02-12 10:11:55 +08:00
我也遇到过类似的问题,Java 是强类型语言,JavaScript 是弱类型,开发时约定好了不能确定到了运行时不出幺蛾子,所以最后都是前端妥协。楼主可以强势一点
Mikewu
2018-02-12 10:16:11 +08:00
@JellyBeanX #2 parameters 里面对应的 key/value 应该是你和 RN 端协商好吧,至于 RN 于 Android 数据转换,帮你百度了一篇文章,https://www.jianshu.com/p/1be8da8b8b15 (其中第三段:js 和原生数据类型转换工具类)
JellyBeanX
2018-02-12 15:09:49 +08:00
@KNOX 嗯嗯,明年来了跟前端喝喝茶😄

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/430235

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX