用户登录

定位

1. 用户验证

根据不同的请求来源,该 API 使用不同的验证方式。如果请求来自第三方厂商(即经由开发者服务器中转),驴博士会验证Vend ID 与 来源 IP;如果请求来自终端设备,驴博士会验证 API Key。

1.1 Vend ID 验证

开发者注册 Vend ID: http://lbs.org.cn/apireg.php

开发者需要提供固定IP。

1.2 API Key 验证

开发者注册 API Key: http://lbs.org.cn/apireg.php(勾选“客户端直连模式 ”)

2. 协议

2.1 方法

HTTP POST http://lbs.org.cn/api/lbs/loc.php

2.2 上行

<location ver='3' vendid='(vendid)' os='android' id='sam@sina.com' geo='false'>

<locate hex='4e3b7584ffc587c0a6c3f6278e591f63177b9b981c11b9da75418f3144'/>

</location>

或者

<location ver='3' key='(apikey)' os='android' id='sam@sina.com' geo='false'>

<locate hex='4e3b7584ffc587c0a6c3f6278e591f63177b9b981c11b9da75418f3144'/>

</location>

区别在于,一个提供了 location[@vendid] 属性,另一个提供了 location[@key]。

其中,

  • /location[@ver] :定位依据的版本,此版本号与驴博士SDK的版本有关但不等同,SDK版本与定位依据版本号的对应关系如下:

    • Android LBS 3.x - 3

    • Android LBS 2.x - 2

    • Android LBS 1.x - 2

    • Black Berry - 1

    • J2ME - 1

    • S60 - 1

    • Win32 - 1

    • Windows Mobile - 1

  • /location[@vendid] :Vend ID;

  • /location[@key] :API Key;

  • /location[@os] :终端设备OS标识,可选;

  • /location[@id] :终端用户的ID,可选;

  • /location[@geo] :指示是否需要返回地址信息,有效值为"true"/"false",可选;

  • /location/locate[@hex] :包含了驴博士定位所需的网络信息,称为“定位依据”。应用程序需要利用驴博士SDK中提供的方法来获取定位依据。

2.3 下行

应答数据是一个包含 location 节点的 XML片段:

<location err='1' time='' range='' lon='' lat=''>(message)</location>

其中

  • /location[@err] :错误代码,没有错误发生时此属性不存在或值为0;

  • /location[@time] :位置的时间差(how old),单位秒;

  • /location[@lon/lat] :经度、维度,有符号浮点数;

  • /locattion value:没有严格定义,一般为错误描述信息,采用UTF-8编码;

实际内容取决于具体情形:

成功(错误码 0)

<location time='0' range='200' lon='116.407516' lat='39.973737'></location>

未知位置(错误码 1)

<location err='1'>无法定位</location>

这是由于驴博士的定位数据没有覆盖用户所在位置,或者客户端代码没能够获取到设备周边的无线信息(因为BUG或机型不兼容等)。

请求无效(错误码 2)

<location err='2'>Bad request: invalid XML</location>


原因是定位请求不是一个有效的XML片段。驴博士期望HTTP请求的BODY是一个<location>节点,多余字符会导致XML解析失败。

定位依据无效(错误码 3)

<location err='3'>location source unavailable</location>


原因是定位依据(通常是定位请求中的 locate.hex 属性)里面没有可用于定位的信息。
进一步的原因比较复杂,可能是用户设备周围确实没有可用于定位的网络信号;或者驴博士的客户端插件偶然出了差错;或者用户的设备不支持驴博士定位插件(因为缺少特定的系统API)。
如果是在开发阶段遇到这种情况,请检查 location.ver 属性是否与当前所使用的驴博士定位插件的版本一致。如果不能确定驴博士定位插件的实际协议版本,请依次尝试 ver='0.1' 和 ver='0.2'。

访问被拒绝(错误码 4)

<location err='4'>Access denied for (vendid)@(remote-ip)</location>


原因是 vendid 不存在或者与 remote-ip 不匹配。