示例目录

Windows系统上 PowerShell 使用OpenAPI接口

Powershell 是运行在Windows机器上实现系统和应用程序管理自动化的命令行脚本环境。在Windows 操作系统里,点击开始->运行->输入PowerShell,进入Windows PowerShell。

一、使用curl命令,读取设备实时温湿度

示例

curl http://t-api.tzonedigital.cn/openapi/terminaldata/realtime/2814?access_token=40aeb04bcba14f41a5e90a0df940600a -method get

二、使用curl命令,读取设备历史温湿度

示例

curl http://t-api.tzonedigital.cn/openapi/terminaldata/history/2814?access_token=40aeb04bcba14f41a5e90a0df940600a -method get



Mac系统上 Terminal 使用OpenAPI接口

终端Terminal 是Mac操作系统里自带命令行脚本环境。终端是系统中一个应用程序,你可以直接在所有程序中找到它。

一、使用curl命令,读取设备实时温湿度

示例

curl http://t-api.tzonedigital.cn/openapi/terminaldata/realtime/2814?access_token=40aeb04bcba14f41a5e90a0df940600a

二、使用curl命令,读取设备历史温湿度

示例

curl http://t-api.tzonedigital.cn/openapi/terminaldata/history/2814?access_token=40aeb04bcba14f41a5e90a0df940600a



Ubuntu系统上 Terminal 使用OpenAPI接口

终端Terminal Linux操作系统里自带命令行脚本环境。终端是系统中一个应用程序,你可以直接在所有程序中找到它。

一、使用curl命令,读取设备实时温湿度

示例

curl http://t-api.tzonedigital.cn/openapi/terminaldata/realtime/2814?access_token=40aeb04bcba14f41a5e90a0df940600a

二、使用curl命令,读取设备历史温湿度

示例

curl http://t-api.tzonedigital.cn/openapi/terminaldata/history/2814?access_token=40aeb04bcba14f41a5e90a0df940600a



WPF (C#) 使用OpenAPI接口

WPF(Windows Presentation Foundation)是微软推出的基于Windows 的用户界面框架,用于应用程序开发。

一、读取设备实时温湿度

示例

string url = "http://t-api.tzonedigital.cn/openapi/terminaldata/realtime/2814?access_token=40aeb04bcba14f41a5e90a0df940600a";
HttpWebRequest hwr = (HttpWebRequest)HttpWebRequest.Create(url);
HttpWebResponse res;

try
{
    res = (HttpWebResponse)hwr.GetResponse();
}
catch
{
    return;
}

if (res.StatusCode == HttpStatusCode.OK)
{
    using (Stream mystream = res.GetResponseStream())
    {
        using (StreamReader reader = new StreamReader(mystream, Encoding.UTF8))
        {
            string json = reader.ReadToEnd();
            if (Convert.ToInt32(JObject.Parse(json)["Status"].ToString()) == 1)
            {
                JObject jobj = JObject.Parse(JObject.Parse(json)["Content"].ToString());
                double temperature = Convert.ToDouble(jobj["Temperature"].ToString());
                double humidity = Convert.ToDouble(jobj["Humidity"].ToString());
                long serverTime = Convert.ToInt64(jobj["ServerTime"].ToString());

                this.Dispatcher.Invoke(new Action(() => {
                    labTemperature1.Content = temperature + "℃";
                    labHumidity1.Content = humidity + "%";
                    labServerTime1.Content = TimeZone.CurrentTimeZone.ToLocalTime(new System.DateTime(1970, 1, 1)).AddMilliseconds(serverTime).ToString("yyyy/MM/dd HH:mm:ss");    
                }));
            }
        }
    }
}

下载示例程序

WPF_Example.zip



Android App 使用OpenAPI接口

一、读取设备实时温湿度

示例

String url = "http://t-api.tzonedigital.cn/openapi/terminaldata/realtime/2814?access_token=40aeb04bcba14f41a5e90a0df940600a";
// 生成请求对象
HttpGet httpGet = new HttpGet(url);
HttpClient httpClient = new DefaultHttpClient();

// 发送请求
try
{
    HttpResponse response = httpClient.execute(httpGet);
    if(response == null)
        return;
    HttpEntity httpEntity = response.getEntity();
    try {
        InputStream inputStream = httpEntity.getContent();
        BufferedReader reader = new BufferedReader(new InputStreamReader(
                inputStream));
        String result = "";
        String line = "";
        while (null != (line = reader.readLine()))
            result += line;

        JSONObject jobj  = new JSONObject(new JSONObject(result).getString("Content"));
        final String imei = jobj.getString("IMEI");
        final String name = jobj.getString("ProductName");
        final double temperature = jobj.getDouble("Temperature");
        final double humidity = jobj.getDouble("Humidity");
        final long serverTime = jobj.getLong("ServerTime");

        runOnUiThread(new Runnable() {
            @Override
            public void run() {
                txtName1.setText(name + "("+imei+")");
                txtTemperature1.setText(temperature + "℃");
                txtHumidity1.setText(humidity + "%");
                Date d = new Date();
                d.setTime(serverTime);
                SimpleDateFormat df = new SimpleDateFormat("yyyy/MM/dd HH:mm:ss");
                txtDateTime1.setText(df.format(d));
            }
        });

    }catch (Exception e){}
}
catch (Exception ex){}

下载示例程序

Android_Example.zip



接收“数据转发”HTTP协议 示例

HTTP协议是Hyper Text Transfer Protocol(超文本传输协议)的缩写,是用于从万维网(WWW:World Wide Web )服务器传输超文本到本地浏览器的传送协议。


C# 示例

string ip = string.Empty;
foreach (IPAddress _IPAddress in Dns.GetHostEntry(Dns.GetHostName()).AddressList)
{
    if (_IPAddress.AddressFamily.ToString() == "InterNetwork")
    {
        ip = _IPAddress.ToString();
    }
}
int port = 80;
HttpListener httpListener = new HttpListener();
httpListener.AuthenticationSchemes = AuthenticationSchemes.Anonymous;
httpListener.Prefixes.Add(string.Format("http://" +ip + "{0}/", port == 80 ? "" : ":" + port));
httpListener.Start();

bool isRunning = true;
new Task(() =>
{
    while (isRunning)
    {
        try
        {
            //阻塞主函数至接收到一个客户端请求为止
            HttpListenerContext httpListenerContext = httpListener.GetContext();
            //阻塞主函数至接收到一个客户端请求为止
            HttpListenerRequest request = httpListenerContext.Request;
            //得到请求路径
            string url = httpListenerContext.Request.RawUrl.ToString().ToLower();
            string[] urlPath = url.Replace("//", "/").Trim('/').Split('/');
            //得到请求数据
            StreamReader reader = new StreamReader(request.InputStream);
            string input = reader.ReadToEnd();
            reader.Close();

            string log = "Request Url:" + url + "\r\n";
            log += "Request Data:" + input + "\r\n";

            httpListenerContext.Response.StatusCode = 200;
            using (StreamWriter writer = new StreamWriter(httpListenerContext.Response.OutputStream))
            {
                string strHtml = "";
                strHtml = "OK";
                writer.WriteLine(strHtml);
            }
        }
        catch (Exception) { }
    }
}).Start();

下载示例程序

HTTP_Example.zip



接收“数据转发”TCP/IP Sokect 示例

Socket 网络通信编程API接口,是基于TCP/IP的传输层协议的封装。


C# 示例

int port = 10064;
//监听端口
TcpListener tcpListener = new TcpListener(new IPEndPoint(IPAddress.Any, port));
tcpListener.Start();
bool isRunning = true;
Console.WriteLine("Listener (" + port + ") was started");

new Task(() =>
{
    while (isRunning)
    {
        //阻塞函数,等待客户端连接
        TcpClient tcpClient = tcpListener.AcceptTcpClient();
        Console.WriteLine("A new connected! remote:" + tcpClient.Client.RemoteEndPoint.ToString());
        //得到网络流操作对象
        NetworkStream netStream = tcpClient.GetStream();
        while (isRunning)
        {
            if (tcpClient.Connected && netStream.DataAvailable)
            {
                byte[] buffer = null;
                buffer = new byte[tcpClient.Available];
                //得到客户端发送数据
                netStream.Read(buffer, 0, buffer.Length);
                string hexString = BitConverter.ToString(buffer, 0, buffer.Length).Replace("-", "");
                string asciiString = Encoding.ASCII.GetString(buffer, 0, buffer.Length).Trim('\0');
                Console.WriteLine("hexString => " + hexString);
                Console.WriteLine("asciiString => " + asciiString);
            }
        }
    }
}).Start();

下载示例程序

Sokect_Example.zip