douminfu8033 2019-04-18 06:11
浏览 127

如何在api请求中声明json的base64?

I am trying to use a base64 encoding of a json array inside an api request. This is the json array:

{"action":"START_STREAMING","metricsList": [{"category":"HARDWARE","subcategory":"MACHINE","component":"DASHBOARD","metric":"STATUS"},":[{"category":"HARDWARE","subcategory":"MACHINE","component":"DASHBOARD","metric":"TIME"},{"category":"HARDWARE","subcategory":"MACHINE","component":"DASHBOARD","metric":"INFO"}],"duration":60}

This is my current solution:

  $command = base64_encode({"action":"START_STREAMING","metricsList": [{"category":"HARDWARE","subcategory":"MACHINE","component":"DASHBOARD","metric":"STATUS"},":[{"category":"HARDWARE","subcategory":"MACHINE","component":"DASHBOARD","metric":"TIME"},{"category":"HARDWARE","subcategory":"MACHINE","component":"DASHBOARD","metric":"INFO"}],"duration":60});

  $request = [
        'command' => $command
    ];

I am pretty sure this isnt quite right. Any help?

  • 写回答

1条回答 默认 最新

  • dongxu4023 2019-04-18 06:28
    关注

    Even though Base64 encoding is not an encryption, sometimes it can be useful to pass data or parameters in a single string.

    Base64 Encode for URL:

    function b64link_encode($string){
        $string = base64_encode($string);
        $string = urlencode($string);
        return $string ;
    }
    

    encode that data and pass

    Base64 Decode for URL:

    function b64link_decode($string){
        $string = urldecode($string);
        $string = base64_decode($string);
        return $string ;
    }
    

    or you can do see this

    Certain characters in the URL are special, like + which stands for a space. To send arbitrary data via the URL, you need to URL escape it to avoid characters contained in the data being recognized as "special characters". Since you're putting the data into HTML, you also need to HTML-escape it to avoid characters in the URL-encoded data being recognized as special HTML characters. Hence:

    $data = /* some data */;
    $base64Data = base64_encode($data);
    $urlData = urlencode($base64Data);
    $htmlData = htmlspecialchars($urlData);
    printf('<input type="hidden" value="%s" name="pass-it-on">', $htmlData);
    
    评论

报告相同问题?

悬赏问题

  • ¥20 求个正点原子stm32f407开发版的贪吃蛇游戏
  • ¥15 正弦信号发生器串并联电路电阻无法保持同步怎么办
  • ¥15 划分vlan后,链路不通了?
  • ¥20 求各位懂行的人,注册表能不能看到usb使用得具体信息,干了什么,传输了什么数据
  • ¥15 个人网站被恶意大量访问,怎么办
  • ¥15 Vue3 大型图片数据拖动排序
  • ¥15 Centos / PETGEM
  • ¥15 划分vlan后不通了
  • ¥20 用雷电模拟器安装百达屋apk一直闪退
  • ¥15 算能科技20240506咨询(拒绝大模型回答)