Q:Java&OPI方式调用示例:执行语句串
A:通过
设置URI:https://opi.tinysoft.com.cn/Service/Run/ 的方式执行语句串;
取数demo:实现获取指定代码最近10日价格序列
import java.net.URI;
import java.net.http.HttpClient;
import java.net.http.HttpRequest;
import java.net.http.HttpResponse;
import java.nio.charset.StandardCharsets;
import java.util.Base64;
public class ModernJavaTinySoftClient {
public static void main(String[] args) {
try {
String url = "https://opi.tinysoft.com.cn/Service/Run/";
String username = "user"; // 替换账号
String password = "password"; // 替换密码
// 1.手动构建 JSON 字符串
String jsonBody = "{\"body\":\"SetSysParam(pn_stock(),'SZ000002');SetSysParam(pn_date(),inttodate(20251231));Return Nday(10,'time',DateTimeToStr(sp_time()),'close',close());\"}";
// 2. 构建 Basic Auth
String auth = username + ":" + password;
String basicAuth = "Basic " + Base64.getEncoder().encodeToString(auth.getBytes(StandardCharsets.ISO_8859_1));
// 3. 创建 HttpClient (Java 11+ 原生,无警告,无依赖)
HttpClient client = HttpClient.newHttpClient();
// 4. 构建请求
HttpRequest request = HttpRequest.newBuilder()
.uri(URI.create(url)) // 使用 URI.create,无弃用警告
.header("Content-Type", "application/json")
.header("TS-EVENTNAME", "auto")
.header("JSON-Encode", "gbk")
.header("Authorization", basicAuth)
// 【关键】添加 User-Agent,防止 403
.header("User-Agent", "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36")
.POST(HttpRequest.BodyPublishers.ofString(jsonBody, StandardCharsets.UTF_8))
.build();
// 5. 发送请求
HttpResponse<String> response = client.send(request, HttpResponse.BodyHandlers.ofString());
System.out.println("状态码: " + response.statusCode());
System.out.println("响应: " + response.body());
} catch (Exception e) {
e.printStackTrace();
}
}
}
执行结果:
