JellyBeanX
V2EX  ›  Android

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

  •  
  •   JellyBeanX · Feb 11, 2018 · 13277 views
    This topic created in 3103 days ago, the information mentioned may be changed or developed.

    公司的项目最近需要做 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 replies    2018-02-12 15:09:49 +08:00
    Mikewu
        1
    Mikewu  
       Feb 11, 2018
    安卓端以 ReadableMap 接收传参就可以了
    JellyBeanX
        2
    JellyBeanX  
    OP
       Feb 12, 2018
    @Mikewu 问题是,parameters 这个键对应的值是不固定的,对应到 Json 上 parameters 对应的应该是一个 JsonObject,内部可能有 id,username,password···键的名称和数量都是不固定,map 不是要先设置键吗,我该怎么解析呢
    KNOX
        3
    KNOX  
       Feb 12, 2018 via Android
    我也遇到过类似的问题,Java 是强类型语言,JavaScript 是弱类型,开发时约定好了不能确定到了运行时不出幺蛾子,所以最后都是前端妥协。楼主可以强势一点
    Mikewu
        4
    Mikewu  
       Feb 12, 2018   ❤️ 1
    @JellyBeanX #2 parameters 里面对应的 key/value 应该是你和 RN 端协商好吧,至于 RN 于 Android 数据转换,帮你百度了一篇文章,https://www.jianshu.com/p/1be8da8b8b15 (其中第三段:js 和原生数据类型转换工具类)
    JellyBeanX
        5
    JellyBeanX  
    OP
       Feb 12, 2018
    @KNOX 嗯嗯,明年来了跟前端喝喝茶😄
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Solana   ·   1086 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 42ms · UTC 23:06 · PVG 07:06 · LAX 16:06 · JFK 19:06
    ♥ Do have faith in what you're doing.