有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java在向平台表示数据时出错

我得到这个错误:

Message: exception 
Details: 'Cannot get property \'data\' on null object

这是我的密码:

import javax.xml.bind.DatatypeConverter;

import com.carriots.sdk.utils.BasicHttp;

def APIKEY = '1c7021dfcc02e4f52a8db39'

//// Data Fetching ////
def inc_data = context.data.data;
def d1 = inc_data[0..1];

//// Custom Rules declaration ////
def device_id = context.data.id;
def devicename = device_id + '23A2B@User.User';
def rssi = context.data.rssi;
def avgSnr = context.data.avgSnr;

def D1 = Long.parseLong(d1, 16)

//// Filter Status ////
if (D1 >= 1) {
    fltstatus = "motion detected";
} else {
    fltstatus = "No motion";
}

//// Payload ////
// Build Stream to persist.
// I think the error from the data variable but I do not why...
def data = '{"motion detection": "' + fltstatus + '"}'
def payload_data = '{"at": "now", "protocol": "v2", "device": "' + 
  devicename + '", "data": "' + data +'"}'

def basicHttp = new BasicHttp();
basicHttp.verb = "POST";
basicHttp.payload = payload_data;
basicHttp.url = "http://api.m.om/status/";
basicHttp.headers = [
    "Content-type": "application/json",
    "Accept": "application/json",
    "User-Agent": "Listener-Carriots",
    "carriots.apikey": APIKEY
]
basicHttp.send();

共 (1) 个答案

  1. # 1 楼答案

    第一次将data用作属性是这一行:

    def inc_data = context.data.data;
                           ^    ^
                          (1)  (2)
    

    由于您使用它两次,因此不可能知道哪个用法引发异常。我建议中断此行,然后使用调试器确定:

    • context不为空
    • context.data不为空