zoukankan      html  css  js  c++  java
  • LeanCloud SDK 中秒杀70%问题的调试方法

    非常多同学在LeanCloud上遇到的不少问题,事实上能够自我解决的,如今介绍一下LeanCloud上的调试方法。

    LeanCloud 是通过 REST API来进行前后端分离的。这意味着当出现故障的时候,首先应该看看网络请求是什么,来确定是client发出的请求不正确,还是服务端处理请求不正确。LeanCloud 上有专门的REST API 文档

    概要

        通过调用同意打印日志的函数。来打印很多其它的日志。包含网络请求日志,依据详细的 REST API 请求和返回结果。从而高速定位问题。若对某个接口函数有疑惑。可高速翻阅API文档

        初始化时调用下面函数来开启日志。

    注意公布应用时关闭日志,避免泄露数据。

    Android SDK 2.6.7+:

      AVOSCloud.setDebugLogEnabled(true);
    iOS SDK :
      setenv("LOG_CURL", "YES", 0);

    Android SDK 调试方法

    先介绍Android SDK的调试方法。

    开启调试日志

    首先在Application的onCreate中。开启调试日志,

     

    然后。针对于以下的请求,fetch一个_User对象,同一时候获取friends字段里的对象。



    然后那里断点一下,能够看到。刚刚的请求和应答是这种,点击查看大图


     
    curl -X GET 
         -H "X-avoscloud-Application-Id: APP_ID" 
         -H "X-avoscloud-Application-Key: YourAppKey" 
         -G --data-urlencode 'include=friends'   
         https://api.leancloud.cn/1.1/users/53f0d534e4b0c1ae470ca958
    

    以及返回的json 字符串。

    {
        "gender": 1, 
        "friends": {
            "__type": "Relation", 
            "className": "_User"
        }, 
        "location": {
            "longitude": 116.316858, 
            "latitude": 39.985525, 
            "__type": "GeoPoint"
        }, 
        "sex": true, 
        "avatar": {
            "key": "4IC5arNWrQo6lC4jOCamCm8Zhh0aVLINVPpO6T0p", 
            "name": "小z", 
            "mime_type": "application/octet-stream", 
            "bucket": "x3o016bx", 
            "url": "http://ac-x3o016bx.qiniudn.com/4IC5arNWrQo6lC4jOCamCm8Zhh0aVLINVPpO6T0p", 
            "createdAt": "2014-12-12T11:10:41.739Z", 
            "objectId": "548acd31e4b03d0b8f8d4d83", 
            "updatedAt": "2014-12-12T11:10:41.739Z", 
            "metaData": {
                "_checksum": "251933a19cd401bae53aafd5cb445a5c", 
                "_name": "小z", 
                "owner": "53f0d534e4b0c1ae470ca958", 
                "size": 45257
            }, 
            "__type": "File"
        }, 
        "username": "小z", 
        "mobilePhoneVerified": false, 
        "createdAt": "2014-08-17T16:15:48.069Z", 
        "objectId": "53f0d534e4b0c1ae470ca958", 
        "importFromParse": false, 
        "emailVerified": false, 
        "updatedAt": "2014-12-17T06:56:56.842Z"
    }

    日志过滤

    能够专门对此类日志进行过滤一下,以便高速获取信息,




    Tag是:

    ===AVOS Cloud===


    那么能够在 刚刚那个REST API文档。看看这个请求是什么意思,文档上面说,


    对那个REST API 文档,搜索一下include 即能够找到。

    那么有了curl请求和请求结果,就能够推断非常多事情了,有没有返回自己想要的值、返回了哪些字段等。对于Pointer类型的字段,返回的是Pointer类型。还是Object类型,Pointer类型的话。仅仅有objectId。Object类型还有对应的字段。

    API在线測试工具

    LeanCloud 还有特别好用的API在线測试工具,比方针对上面的请求,我们迅速找到对应的API,




    然后,




    仅仅要把写入class和objectdId 既能够获得格式化的json字符串。

    就能够看看原来的fetch代码发生了什么。

    iOS SDK 调试方法

    iOS SDK上也是一样的。

    应用启动后调用下面函数,



    针对于这样一个查找用户的函数。查找username包括有子串partName的全部用户,





    在结束的时候打上断点,那么能够看到日志输出,

    这个请求经过urlencode 了。找个工具decode一下,http://tool.chinaz.com/Tools/URLEncode.aspx,能够看到的是,


    curl -i -k -X GET --compressed 
          -H 'x-avoscloud-request-sign: 517d516e7c09a72822e116e64d11e2ce,1418816439658' 
          -H 'X-avoscloud-Application-Production: 1' 
          -H 'X-avoscloud-Application-Id: x3o016bxnkpyee7e9pa5pre6efx2dadyerdlcez0wbzhw25g'
          -H 'User-Agent: AVOS Cloud iOS-v2.6.8 SDK'
          -H 'X-avoscloud-Session-Token: axchejue4dmu04h5radozyvnc' 
          -H 'Accept: application/json' 
          "https://api.leancloud.cn/1.1/users?order=-updatedAt&where={"username":{"$regex":".*lzw.*"},"objectId":{"$ne":"54913d21e4b0c4eaaccc3a3e"}}"

    能够看到查找用户。正则匹配.*lzw.*,同一时候objectId不是自己的。来找到其他人,而且依据更新时间的逆序排序。

    那么就清晰了。能很多其它弄清晰后面是怎么工作的。


    很多其它样例

    我们再来几个样例,


    调试 login

    login的时候发出的请求,



    curl -i -k -X POST --compressed  
         -d '{"username":"lzw12","password":"lzw12"}'   
         -H 'x-avoscloud-request-sign: 3bd58a85549a3879442028630278ec43,1418814108622'  
         -H 'X-avoscloud-Application-Production: 1'   
         -H 'X-avoscloud-Application-Id: x3o016bxnkpyee7e9pa5pre6efx2dadyerdlcez0wbzhw25g'  
         -H 'User-Agent: AVOS Cloud iOS-v2.6.8 SDK' 
         -H 'Content-Type: application/json; charset=utf-8' 
         -H 'Accept: application/json'  
         "https://api.leancloud.cn/1.1/login"


    
    

    能够看到,传入了username和password。

    调试 save

    创建一条记录,

    日志是:

    curl -X POST 
         -H "X-avoscloud-Application-Id: APP_ID"
         -H "X-avoscloud-Application-Key: YourAppKey" 
         -H "Content-Type: application/json" 
         -d '{"requests":[{"body":{"__children":[],"__internalId":"c9d38635-8336-4448-bb84-d99d89d15b4a","content":"这是一条Todo"},"method":"POST","path":"/1.1/classes/Todo"}]}' 
         https://api.leancloud.cn/1.1/batch/save
    


    能够看到发出了/batch/save的请求,批量保存。

    调试 push

    再来看推送的时候的请求,代码是这种。


    setQuery那句是说,依据installationId来找到自己,然后进行推送。

    curl   -X POST 
           -H "X-avoscloud-Application-Id: APP_ID" 
           -H "X-avoscloud-Application-Key: YourAppKey" 
           -H "Content-Type: application/json" 
           -d '{"channels":["public"],"data":{"alert":"hello world from avoscloud."},"where":{"installationId":"4f55cffe-19d3-4d2f-b309-ddadd4f07b4e"}}' 
           https://api.leancloud.cn/1.1/push

    网络请求都能够这般输出日志,能够依据输出的日志来推断是哪一步出了错。

  • 相关阅读:
    PPT1 例1
    皇宫看守 树形DP
    没有上司的晚会 树形DP
    将功补过 树形DP
    战略游戏 树形DP
    选课 树形DP
    二叉苹果树 树形DP
    GDOI2016总结
    加分二叉树 树形DP
    [注意]未做的题(最短路)
  • 原文地址:https://www.cnblogs.com/brucemengbm/p/6806036.html
Copyright © 2011-2022 走看看