将
{设备IP}替换为实际 IP(与通信约定一致),端口默认8555,不要写死某一台机器的地址。
1. cURL
HOST="http://{设备IP}:8555"
curl -X POST "$HOST/api/app_print" \
-H "Content-Type: application/json" \
-d "{\"CMD_ID\":\"00\",\"TYPE\":1}"
curl -X POST "$HOST/api/app_print" \
-H "Content-Type: application/json" \
-d "{\"CMD_ID\":\"01\",\"IMG_URL\":\"http://192.168.1.20:8080/jobs/a.png\",\"WIDTH\":100}"
curl -X POST "$HOST/api/app_print" \
-H "Content-Type: application/json" \
-d "{\"CMD_ID\":\"02\",\"TYPE\":1,\"MOVE\":10}"
curl -X POST "$HOST/api/app_print" \
-H "Content-Type: application/json" \
-d "{\"CMD_ID\":\"03\"}"
curl -X POST "$HOST/api/app_print" \
-H "Content-Type: application/json" \
-d "{\"CMD_ID\":\"04\"}"
2. C
using System.Net.Http.Json;
var host = Environment.GetEnvironmentVariable("PRINTER_HOST")
?? "http://{设备IP}:8555";
var http = new HttpClient { BaseAddress = new Uri(host) };
async Task<JsonElement> Call(object body) {
var resp = await http.PostAsJsonAsync("/api/app_print", body);
resp.EnsureSuccessStatusCode();
var json = await resp.Content.ReadFromJsonAsync<JsonElement>();
if (json.GetProperty("code").GetInt32() != 0)
throw new Exception(json.GetProperty("msg").GetString());
return json;
}
await Call(new { CMD_ID = "00", TYPE = 1 });
await Call(new { CMD_ID = "01", IMG_URL = "http://192.168.1.20:8080/jobs/a.png", WIDTH = 100 });
await Call(new { CMD_ID = "02", TYPE = 1, MOVE = 10 });
await Call(new { CMD_ID = "03" });
await Call(new { CMD_ID = "04" });
3. Java
Java 11+ java.net.http.HttpClient。将环境变量 PRINTER_HOST 设为 http://实际IP:8555,或把占位符换成设备 IP。
import java.net.URI;
import java.net.http.HttpClient;
import java.net.http.HttpRequest;
import java.net.http.HttpResponse;
String host = System.getenv().getOrDefault("PRINTER_HOST", "http://{设备IP}:8555");
HttpClient http = HttpClient.newHttpClient();
String call(String jsonBody) throws Exception {
HttpRequest req = HttpRequest.newBuilder()
.uri(URI.create(host + "/api/app_print"))
.header("Content-Type", "application/json")
.POST(HttpRequest.BodyPublishers.ofString(jsonBody))
.build();
HttpResponse<String> resp = http.send(req, HttpResponse.BodyHandlers.ofString());
if (resp.statusCode() / 100 != 2)
throw new RuntimeException("HTTP " + resp.statusCode() + " " + resp.body());
String body = resp.body();
if (!body.contains("\"code\":0") && !body.contains("\"code\": 0"))
throw new RuntimeException(body);
return body;
}
call("{\"CMD_ID\":\"00\",\"TYPE\":1}");
call("{\"CMD_ID\":\"01\",\"IMG_URL\":\"http://192.168.1.20:8080/jobs/a.png\",\"WIDTH\":100}");
call("{\"CMD_ID\":\"02\",\"TYPE\":1,\"MOVE\":10}");
call("{\"CMD_ID\":\"03\"}");
call("{\"CMD_ID\":\"04\"}");