Visual FoxPro 6.0 作為經典桌面開發工具,若需集成 Java 編寫的 Web 應用,可通過 HTTP API 調用實現。本文提供 VFP 調用 Web API 的完整代碼方案。
VFP 6.0 (客戶端)
↓ HTTP Request (GET/POST, JSON/XML)
Java Web 應用 (服務端, Tomcat/Spring Boot 等)
↓ HTTP Response (JSON)
VFP 解析響應 → 更新本地數據/界面
LOCAL oHttp, lcUrl, lcPostData, lcResult
oHttp = CREATEOBJECT("MSXML2.XMLHTTP.3.0") || "MSXML2.XMLHTTP"
lcUrl = "https://localhost:8080/api/vfp/notify"
lcPostData = '{"action":"sync","data":{"id":123,"status":1}}'
oHttp.Open("POST", lcUrl, .F.) && 同步請求
oHttp.setRequestHeader("Content-Type", "application/json; charset=utf-8")
oHttp.Send(lcPostData)
IF oHttp.Status = 200
lcResult = oHttp.ResponseText
MESSAGEBOX("調用成功: " + lcResult)
ELSE
MESSAGEBOX("調用失敗: " + TRANSFORM(oHttp.Status) + " " + oHttp.StatusText)
ENDIF
oHttp = CREATEOBJECT("WinHttp.WinHttpRequest.5.1")
oHttp.Open("POST", lcUrl, .F.)
oHttp.SetRequestHeader("Content-Type", "application/json")
oHttp.Send(lcPostData)
lcResult = oHttp.ResponseText
若 VFP 直接調用不穩定,可編寫 C++ DLL 封裝 libcurl,VFP 用 `DECLARE` 調用 DLL 導出函數。
@RestController
@RequestMapping("/api/vfp")
public class VfpController {
@PostMapping("/notify")
public Result notify(@RequestBody VfpRequest request) {
// 業務處理
return Result.success("VFP 數據已接收: " + request.getAction());
}
static class VfpRequest {
private String action;
private Map data;
// getter/setter
}
}
VFP 6.0 無內置 JSON 解析,可用:
VFP 6.0 集成 Java Web 的關鍵是HTTP API 通信。用 `MSXML2.XMLHTTP` 發送請求,JSON 交換數據,Java 端提供 REST 接口。避免直接調用 Java 類或 RMI 等複雜協議,HTTP 最通用、穩定、易調試。