2016-07-30 95 views
2

我已经完成了谷歌和许多其他页面的研究,我可以通过traccar api提取数据here所以我做下一个研究如何使用它,并最终找到这个答案here mvalverde 。在那个岗位上,他写一些代码,就像这样:如何使用traccar api获取设备

// find All devices - GET request 
var result = HTTP.call(
    "GET", 
    'http://your_domain:8082/api/devices/', 
    { 
     auth: '[email protected]:password' , 
     params: { 
     } 
    } 
); 

// add device 
var name = 'name your device'; 
var uniqueId = '122323223232'; // usually this is the device imei 
var result = HTTP.post(
    'http://your_domain:8082/api/devices/', 
    { 
     auth: '[email protected]:password' , 
     data:{ 
      groupId:null, 
      id: null, 
      lastUpdate:null, 
      status:'', 
      name:name, 
      uniqueId:uniqueId 
     } 
    } 
); 

他说这是JavaScript的,所以我尽量实现在JavaScript方式:

<!DOCTYPE html> 
<html> 
    <head> 
    <meta charset="utf-8"> 
    <title>try traccar api</title> 
    </head> 
    <body> 
    <script type="text/javascript"> 
     var result = HTTP.call(
     "GET", 
     'http://103.23.20.176:8082/api/devices/', 
     { 
      auth: 'email:password' , 
      params: { 
      } 
     } 
    ); 
     console.log(result); 
    </script> 
    </body> 
</html> 

,但我在控制台中看到的错误。我怀疑它不是纯粹的JavaScript,如果它可以指导我使用JavaScript编写实现。所以任何人都可以帮我解决这个问题。

PS:我仍然在JS领域的新秀

== == UPDATE
感谢Anton tananaev,我解决了这个问题,像这样:再次

<!DOCTYPE html> 
<html> 
    <head> 
    <meta charset="utf-8"> 
    <title>try traccar api</title> 
    </head> 
    <body> 
    <script src="js/jquery-2.2.2.min.js" charset="utf-8"></script> 
    <script type="text/javascript"> 
     $.ajax({ 
     type: 'get', 
     url: 'http://103.23.20.176:8082/api/devices/', 
     headers: { 
      "Authorization": "Basic " + btoa("admin:admin") 
     }, 
     success: function (response) { 
      console.log(response); 
     } 
     }); 
    </script> 
    </body> 
</html> 

和1个问题,怎么样发布数据?我试试这样:

<!DOCTYPE html> 
<html> 
    <head> 
    <meta charset="utf-8"> 
    <title>try traccar api</title> 
    </head> 
    <body> 
    <script src="js/jquery-2.2.2.min.js" charset="utf-8"></script> 
    <script type="text/javascript"> 
     var name = "Bus 2"; 
     var uid = "1212321233"; 
     $.ajax({ 
     type: 'post', 
     url: 'http://103.23.20.176:8082/api/devices/', 
     headers: { 
      "Authorization": "Basic " + btoa("email:pass") 
     }, 
     data:{ 
      id:null, 
      name:name, 
      uniqueId:uid, 
      groupId:null, 
      status:'', 
      lastUpdate:null 
     }, 
     success: function (response) { 
      console.log(response); 
     } 
     }); 
    </script> 
    </body> 
</html> 

但我得到状态码415不受支持的媒体类型。我在代码中想念什么?

== ==关
最终代码,接下来的问题就在这里,

<!DOCTYPE html> 
<html> 
    <head> 
    <meta charset="utf-8"> 
    <title>try traccar api</title> 
    </head> 
    <body> 
    <script src="js/jquery-2.2.2.min.js" charset="utf-8"></script> 
    <script type="text/javascript"> 
     var name = "Bus 3"; 
     var uid = "1243232133"; 
     $.ajax({ 
     type: 'post', 
     url: 'http://103.23.20.176:8082/api/devices/', 
     headers: { 
      "Authorization": "Basic " + btoa("email:pass") 
     }, 
     contentType:"application/json", 
     data:JSON.stringify({ 
      name:name, 
      uniqueId:uid 
     }), 
     success: function (response) { 
      console.log(response); 
     } 
     }); 
    </script> 
    </body> 
</html> 

谢谢你,我解决我的问题:)

+0

什么错误,你所看到的? – RiggsFolly

+0

ReferenceError:HTTP未定义@RiggsFolly – dyaadin

回答

2

HTTP对象没有定义。你可以使用jQuery。首先添加库:

<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.1.0/jquery.min.js"></script> 

然后执行API调用。事情是这样的:

$.ajax({ 
    type: 'get', 
    url: 'http://103.23.20.176:8082/api/devices/', 
    headers: { 
     "Authorization": "Basic " + btoa(USERNAME + ":" + PASSWORD) 
    }, 
    success: function (response) { 
     console.log(response); 
    } 
}); 

要发布的数据,你可以发送POST请求是这样的:

var data = { 
    name: 'Test', 
    ... 
} 

$.ajax({ 
    type: 'post', 
    data: JSON.stringify(data), 
    contentType: 'application/json', 
    ... 
}); 
+0

谢谢@anton,但是,如何添加数据? – dyaadin

+0

增加了发布数据的信息。 –

+0

谢谢:)我很感激在这里遇到你@anton – dyaadin