Appearance
自定义通讯相关方法
HTTP请求方法
DoWebGet
语法
javascript
DoWebGet(URL)
功能
该函数对URL执行指定的Web Get请求。
参数
名称 | 必选/可选 | 数据类型 | 说明 |
---|---|---|---|
URL | 必选 | string | Get请求返回信息 |
返回值
Get请求返回信息。
说明
该函数对URL执行指定的Web Get请求。同样,该函数唯一的参数URL,可以是绝对或者相对当前网页的URL,返回值可以保存在一个变量中。可以用该函数实现自定义的基于HTTP协议的通讯协议。或者在不提交当前页面的情况下从服务器及时获取信息。
示例代码
javascript
// 基本用法 - 获取数据
var response = OCX_OBJ.DoWebGet("https://api.example.com/data");
console.log("服务器响应:", response);
// 获取JSON数据
var jsonResponse = OCX_OBJ.DoWebGet("https://api.example.com/users");
var users = JSON.parse(jsonResponse);
// 获取配置信息
var config = OCX_OBJ.DoWebGet("./config/settings.json");
// 检查服务器状态
var status = OCX_OBJ.DoWebGet("https://api.example.com/health");
if (status === "OK") {
console.log("服务器运行正常");
}
// 获取文档模板列表
var templates = OCX_OBJ.DoWebGet("https://api.example.com/templates");
DoWebExecute
语法
javascript
DoWebExecute(URL, CPARA)
功能
该函数对URL执行指定的Multi-Part请求。
参数
名称 | 必选/可选 | 数据类型 | 说明 |
---|---|---|---|
URL | 必选 | string | Post请求返回信息 |
CPARA | 必选 | string | 参数字符串 |
返回值
Post请求返回信息。
说明
该函数对URL执行指定的Multi-Part请求。同样,该函数的参数URL,可以是绝对或者相对当前网页的URL,CPARA参数是"&"分隔的"F1=V1"类型的参数串。请参考SaveToURL函数的介绍中有关CPARA的部分。该函数的返回值可以保存在一个变量中。可以用该函数实现自定义的基于HTTP协议的通讯协议。或者在不提交当前页面的情况下更新服务器的信息。
注意:该方法执行的是Multi-Part请求。
示例代码
javascript
// 基本用法 - 发送数据
var params = "name=张三&age=25&department=技术部";
var response = OCX_OBJ.DoWebExecute("https://api.example.com/users", params);
console.log("服务器响应:", response);
// 提交表单数据
var formData = "username=admin&password=123456&action=login";
var loginResult = OCX_OBJ.DoWebExecute("https://api.example.com/login", formData);
// 更新用户信息
var updateData = "id=123&name=李四&email=lisi@example.com&phone=13800138000";
var updateResult = OCX_OBJ.DoWebExecute("https://api.example.com/users/update", updateData);
// 上传文档信息
var docInfo = "title=合同文档&type=contract&size=1024&author=张三";
var uploadResult = OCX_OBJ.DoWebExecute("https://api.example.com/documents", docInfo);
// 批量操作
var batchData = "action=batch_update&ids=1,2,3&status=approved";
var batchResult = OCX_OBJ.DoWebExecute("https://api.example.com/batch", batchData);
HTTP头信息管理
AddHTTPHeader
语法
javascript
AddHTTPHeader(HeaderStr)
功能
添加自定义的HTTP头信息。
参数
名称 | 必选/可选 | 数据类型 | 说明 |
---|---|---|---|
HeaderStr | 必选 | string | HTTP头字符串 |
返回值
无返回值。
说明
添加自定义的HTTP头信息。用于定制认证等。 参数HeaderStr:设置HTTP头字符串,以键值对方式传入。如Obj.AddHTTPHeader("key:value")。
示例代码
javascript
// 添加认证头
OCX_OBJ.AddHTTPHeader("Authorization: Bearer your-token-here");
// 添加内容类型
OCX_OBJ.AddHTTPHeader("Content-Type: application/json");
// 添加自定义头
OCX_OBJ.AddHTTPHeader("X-API-Key: your-api-key");
// 添加用户代理
OCX_OBJ.AddHTTPHeader("User-Agent: NTKO-Office-Client/1.0");
// 添加多个头信息
OCX_OBJ.AddHTTPHeader("Authorization: Bearer token123");
OCX_OBJ.AddHTTPHeader("Content-Type: application/x-www-form-urlencoded");
OCX_OBJ.AddHTTPHeader("X-Request-ID: req-12345");
HTTPHeaderReset
语法
javascript
HTTPHeaderReset()
功能
清除已经自定义的所有HTTP头信息。
参数
无参数。
返回值
无返回值。
说明
清除已经自定义的所有HTTP头信息。用于定制认证等。
示例代码
javascript
// 清除所有自定义HTTP头
OCX_OBJ.HTTPHeaderReset();
// 重新设置HTTP头
function resetAndSetHeaders() {
OCX_OBJ.HTTPHeaderReset();
OCX_OBJ.AddHTTPHeader("Authorization: Bearer new-token");
OCX_OBJ.AddHTTPHeader("Content-Type: application/json");
}
完整示例
HTTP通讯管理器
javascript
// HTTP通讯管理器
class HTTPCommunicationManager {
// 设置认证信息
static setAuthentication(token) {
OCX_OBJ.HTTPHeaderReset();
OCX_OBJ.AddHTTPHeader("Authorization: Bearer " + token);
OCX_OBJ.AddHTTPHeader("Content-Type: application/json");
}
// 获取数据
static getData(url) {
try {
var response = OCX_OBJ.DoWebGet(url);
return JSON.parse(response);
} catch (error) {
console.error("获取数据失败:", error);
return null;
}
}
// 发送数据
static postData(url, data) {
try {
var params = this.objectToParams(data);
var response = OCX_OBJ.DoWebExecute(url, params);
return JSON.parse(response);
} catch (error) {
console.error("发送数据失败:", error);
return null;
}
}
// 对象转参数字符串
static objectToParams(obj) {
var params = [];
for (var key in obj) {
if (obj.hasOwnProperty(key)) {
params.push(key + "=" + encodeURIComponent(obj[key]));
}
}
return params.join("&");
}
// 更新数据
static updateData(url, data) {
return this.postData(url, data);
}
// 删除数据
static deleteData(url, id) {
var params = "id=" + id + "&action=delete";
var response = OCX_OBJ.DoWebExecute(url, params);
return JSON.parse(response);
}
}
API客户端
javascript
// API客户端
class APIClient {
constructor(baseURL, token) {
this.baseURL = baseURL;
this.token = token;
this.setupHeaders();
}
// 设置HTTP头
setupHeaders() {
OCX_OBJ.HTTPHeaderReset();
OCX_OBJ.AddHTTPHeader("Authorization: Bearer " + this.token);
OCX_OBJ.AddHTTPHeader("Content-Type: application/x-www-form-urlencoded");
OCX_OBJ.AddHTTPHeader("X-Client: NTKO-Office-Client");
}
// 获取用户信息
getUserInfo(userId) {
var url = this.baseURL + "/users/" + userId;
var response = OCX_OBJ.DoWebGet(url);
return JSON.parse(response);
}
// 更新用户信息
updateUser(userId, userData) {
var url = this.baseURL + "/users/" + userId;
var params = this.buildParams(userData);
var response = OCX_OBJ.DoWebExecute(url, params);
return JSON.parse(response);
}
// 获取文档列表
getDocuments() {
var url = this.baseURL + "/documents";
var response = OCX_OBJ.DoWebGet(url);
return JSON.parse(response);
}
// 上传文档
uploadDocument(docData) {
var url = this.baseURL + "/documents";
var params = this.buildParams(docData);
var response = OCX_OBJ.DoWebExecute(url, params);
return JSON.parse(response);
}
// 构建参数字符串
buildParams(data) {
var params = [];
for (var key in data) {
if (data.hasOwnProperty(key)) {
params.push(key + "=" + encodeURIComponent(data[key]));
}
}
return params.join("&");
}
}
文档同步服务
javascript
// 文档同步服务
class DocumentSyncService {
constructor(apiClient) {
this.apiClient = apiClient;
}
// 同步文档到服务器
syncDocumentToServer(documentData) {
var syncData = {
title: documentData.title,
content: documentData.content,
author: documentData.author,
timestamp: new Date().toISOString(),
action: "sync"
};
return this.apiClient.uploadDocument(syncData);
}
// 从服务器获取文档
getDocumentFromServer(documentId) {
var url = this.apiClient.baseURL + "/documents/" + documentId;
var response = OCX_OBJ.DoWebGet(url);
return JSON.parse(response);
}
// 更新文档状态
updateDocumentStatus(documentId, status) {
var updateData = {
id: documentId,
status: status,
action: "update_status"
};
var url = this.apiClient.baseURL + "/documents/status";
var params = this.apiClient.buildParams(updateData);
var response = OCX_OBJ.DoWebExecute(url, params);
return JSON.parse(response);
}
// 批量同步文档
batchSyncDocuments(documents) {
var results = [];
for (var i = 0; i < documents.length; i++) {
var result = this.syncDocumentToServer(documents[i]);
results.push(result);
}
return results;
}
}
实时通讯工具
javascript
// 实时通讯工具
class RealTimeCommunication {
constructor(serverURL) {
this.serverURL = serverURL;
this.setupCommunication();
}
// 设置通讯
setupCommunication() {
OCX_OBJ.HTTPHeaderReset();
OCX_OBJ.AddHTTPHeader("Content-Type: application/x-www-form-urlencoded");
OCX_OBJ.AddHTTPHeader("X-Real-Time: true");
}
// 发送心跳
sendHeartbeat() {
var params = "action=heartbeat×tamp=" + new Date().getTime();
var response = OCX_OBJ.DoWebExecute(this.serverURL + "/heartbeat", params);
return JSON.parse(response);
}
// 发送消息
sendMessage(message) {
var params = "action=message&content=" + encodeURIComponent(message) + "×tamp=" + new Date().getTime();
var response = OCX_OBJ.DoWebExecute(this.serverURL + "/message", params);
return JSON.parse(response);
}
// 获取最新消息
getLatestMessages() {
var url = this.serverURL + "/messages?timestamp=" + new Date().getTime();
var response = OCX_OBJ.DoWebGet(url);
return JSON.parse(response);
}
// 开始实时通讯
startRealTimeCommunication() {
var self = this;
setInterval(function() {
self.sendHeartbeat();
}, 30000); // 每30秒发送一次心跳
}
}
使用场景示例
文档管理系统
javascript
// 文档管理系统
function documentManagementSystem() {
// 1. 获取文档列表
function getDocumentList() {
var response = OCX_OBJ.DoWebGet("https://api.example.com/documents");
var documents = JSON.parse(response);
return documents;
}
// 2. 保存文档
function saveDocument(documentData) {
var params = "title=" + encodeURIComponent(documentData.title) +
"&content=" + encodeURIComponent(documentData.content) +
"&author=" + encodeURIComponent(documentData.author);
var response = OCX_OBJ.DoWebExecute("https://api.example.com/documents", params);
return JSON.parse(response);
}
// 3. 更新文档
function updateDocument(documentId, documentData) {
var params = "id=" + documentId +
"&title=" + encodeURIComponent(documentData.title) +
"&content=" + encodeURIComponent(documentData.content);
var response = OCX_OBJ.DoWebExecute("https://api.example.com/documents/update", params);
return JSON.parse(response);
}
// 4. 删除文档
function deleteDocument(documentId) {
var params = "id=" + documentId + "&action=delete";
var response = OCX_OBJ.DoWebExecute("https://api.example.com/documents/delete", params);
return JSON.parse(response);
}
}
用户认证系统
javascript
// 用户认证系统
function userAuthenticationSystem() {
// 1. 用户登录
function login(username, password) {
OCX_OBJ.HTTPHeaderReset();
OCX_OBJ.AddHTTPHeader("Content-Type: application/x-www-form-urlencoded");
var params = "username=" + encodeURIComponent(username) +
"&password=" + encodeURIComponent(password) +
"&action=login";
var response = OCX_OBJ.DoWebExecute("https://api.example.com/auth/login", params);
return JSON.parse(response);
}
// 2. 获取用户信息
function getUserInfo(token) {
OCX_OBJ.HTTPHeaderReset();
OCX_OBJ.AddHTTPHeader("Authorization: Bearer " + token);
var response = OCX_OBJ.DoWebGet("https://api.example.com/user/info");
return JSON.parse(response);
}
// 3. 更新用户信息
function updateUserInfo(token, userData) {
OCX_OBJ.HTTPHeaderReset();
OCX_OBJ.AddHTTPHeader("Authorization: Bearer " + token);
OCX_OBJ.AddHTTPHeader("Content-Type: application/x-www-form-urlencoded");
var params = "name=" + encodeURIComponent(userData.name) +
"&email=" + encodeURIComponent(userData.email) +
"&phone=" + encodeURIComponent(userData.phone);
var response = OCX_OBJ.DoWebExecute("https://api.example.com/user/update", params);
return JSON.parse(response);
}
}
注意事项
URL格式:
- 支持绝对URL和相对URL
- 确保URL可访问
- 注意HTTPS和HTTP协议
参数格式:
- CPARA参数使用"&"分隔
- 格式为"key=value"
- 需要URL编码特殊字符
HTTP头管理:
- 使用AddHTTPHeader添加头信息
- 使用HTTPHeaderReset清除头信息
- 注意头信息的格式
错误处理:
- 检查网络连接
- 处理服务器错误
- 验证返回数据格式
性能优化:
- 合理使用HTTP头
- 避免频繁的请求
- 缓存常用数据
安全性:
- 使用HTTPS协议
- 保护认证信息
- 验证服务器响应
编码问题:
- 使用encodeURIComponent编码参数
- 处理中文等特殊字符
- 注意字符集设置
异步处理:
- 考虑请求超时
- 处理并发请求
- 避免阻塞操作