如果您无法使密钥库正常工作,也许您想尝试这个方法。
创建一个专用的命令行可执行文件(.exe),它将读取网页并将源代码保存到文本文件中。然后您可以使用ColdFusion来读取该文件并处理数据。
以下是ColdFusion代码:
<cfscript>
_execPath = "c:/bin/clifton.exe";
_filePath = "c:/bin/clifton.txt";
cfexecute(name="#_execPath#");
do {
sleep(100);
} while ( not fileExists(_filePath) )
do {
sleep(100);
_fileInfo = getFileInfo(_filePath);
writeOutput(" ## ");
cfflush();
} while ( _fileInfo.size eq 0 || dateDiff("s", _fileInfo.lastmodified, now()) lte 3 )
writeOutput("<hr />")
_result = fileRead(_filePath);
writeDump(_result);
</cfscript>
正如您所看到的,它依赖于clifton.exe
并读取clifton.txt
(执行clifton.exe的结果为clifton.txt)。
如何制作clifton.exe
您将使用Dart SDK和dart2native
工具在开发计算机上创建可执行文件。您可以将可执行文件部署到生产服务器作为独立应用(无需在生产环境中安装Dart SDK)。
import 'dart:convert';
import 'dart:io';
main() {
const String _certFilePath = 'c:/bin/sfig2.crt.pem';
const String _responseFilePath = 'c:/bin/clifton.txt';
const String _uri =
'https://www.cliftoncameras.co.uk/all-brands-and-types-of-used-cameras/';
final File _file = new File(_responseFilePath);
final IOSink _sink = _file.openWrite();
final SecurityContext _context = new SecurityContext();
_context.setTrustedCertificates(_certFilePath);
final HttpClient _client = new HttpClient(context: _context);
saveSourceToFile(_client, _uri, _sink);
_client.close();
}
void saveSourceToFile(HttpClient _client, String _uri, IOSink _sink) {
_client
.getUrl(Uri.parse(_uri))
.then((req) => req.close())
.then((res) => res.transform(Utf8Decoder()).listen((data) {
_sink.write(data);
}, onDone: () {
_sink.close();
}));
}
- 从https://dart.dev/下载并安装Dart SDK
- 打开终端窗口,使用
dart --version
测试Dart的安装情况(如果需要,在任何文件夹中都应该能够运行dart,将dart添加到您的PATH中)
- 在终端窗口中,使用
cd c:\bin
更改目录到c:\bin
- 接下来,运行
dart2native clifton.dart -o clifton.exe
- 如果编译成功,您应该在
c:\bin
中拥有三个文件:clifton.dart
、clifton.exe
和证书sfig2.crt.pem
- 如果您希望,可以在终端窗口中测试运行
clifton.exe
,它应该会创建clifton.txt
文件
- 测试调用
clifton.exe
并等待clifton.txt
输出内容的ColdFusion页面
如果您要在生产环境中部署,您需要同时使用文件
clifton.exe
和
sfig2.crt.pem
(证书)。
祝你好运!