V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
JellyBeanX
V2EX  ›  Android

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

  •  
  •   JellyBeanX · 2018-02-11 16:07:02 +08:00 · 9603 次点击
    这是一个创建于 2512 天前的主题,其中的信息可能已经有所发展或是发生改变。

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

    5 条回复    2018-02-12 15:09:49 +08:00
    Mikewu
        1
    Mikewu  
       2018-02-11 17:04:23 +08:00
    安卓端以 ReadableMap 接收传参就可以了
    JellyBeanX
        2
    JellyBeanX  
    OP
       2018-02-12 09:00:55 +08:00
    @Mikewu 问题是,parameters 这个键对应的值是不固定的,对应到 Json 上 parameters 对应的应该是一个 JsonObject,内部可能有 id,username,password···键的名称和数量都是不固定,map 不是要先设置键吗,我该怎么解析呢
    KNOX
        3
    KNOX  
       2018-02-12 10:11:55 +08:00 via Android
    我也遇到过类似的问题,Java 是强类型语言,JavaScript 是弱类型,开发时约定好了不能确定到了运行时不出幺蛾子,所以最后都是前端妥协。楼主可以强势一点
    Mikewu
        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 和原生数据类型转换工具类)
    JellyBeanX
        5
    JellyBeanX  
    OP
       2018-02-12 15:09:49 +08:00
    @KNOX 嗯嗯,明年来了跟前端喝喝茶😄
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   2789 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 18ms · UTC 09:37 · PVG 17:37 · LAX 01:37 · JFK 04:37
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.