我想为我的Phonegap Android应用程序创建Web服务,这将进一步调用进展4GL 91.D程序。
有没有人知道如何为此创建Web服务。
答案 0 :(得分:0)
那将是一场斗争。您可以创建一个侦听套接字的服务器,但您必须自己处理所有内容!
但是,您可能最好用支持更好的语言编写Web服务,然后找到另一种从数据库中获取数据的方法。如果你真的遇到了一个10岁以上的版本,你真的应该考虑迁移到别的东西。
答案 1 :(得分:0)
您无需升级所有内容 - 您只需获取版本10客户端的许可证即可。 V10客户端可以连接到v9数据库(规则是客户端最多可以达到一个主要版本),因此您可以使用它来构建SOAP服务。或者你可以获得v10“webspeed”许可证。
如果你有这些技巧,你可以为一些4GL代码编写一个足够简单的CGI包装器。我偶尔会把这样的东西扔到一起:
#!/bin/bash
#
LOGFILE=/tmp/myservice.log
SVC=sample
# if a FIFO does not exist for the specified service then create it in /tmp
#
# $1 = direction -- in or out
# $2 = unique service name
#
pj_fifo() {
if [ ! -p /tmp/$2.$1 ]
then
echo `date` "Creating FIFO $2.$1" >> ${LOGFILE}
rm -f /tmp/$2.$1 >> ${LOGFILE} &2>&1
/bin/mknod -m 666 /tmp/$2.$1 p >> ${LOGFILE} &2>&1
fi
}
if [ "${REQUEST_METHOD}" = "POST" ]
then
read QUERY_STRING
fi
# header must include a blank line
#
# we're returning XML
#
echo "Content-type: text/xml" # or text/html or text/plain
echo
# debugging echo...
#
# echo $QUERY_STRING
#
# echo "<html><head><title>Sample CGI Interface</title></head><body><pre>QUERY STRING = ${QUERY_STRING}</pre></body></html>"
# ensure that the FIFOs exist
#
pj_fifo in $SVC
pj_fifo out $SVC
# make the request
#
echo "$QUERY_STRING" > /tmp/${SVC}.in
# send the response back to the requestor
#
cat /tmp/${SVC}.out
# all done!
#
echo `date` "complete" >> ${LOGFILE}
然后你只安排一个后台会话来阅读/tmp/sample.in:
/* sample.p
*
* mbpro dbname -p sample.p > /tmp/sample.log 2>&1 &
*
*/
define variable request as character no-undo.
define variable result as character no-undo.
input from value( "/tmp/sample.in" ).
output to value( "/tmp/sample.out" ).
do while true:
import unformatted request.
/* parse it and do something with it... */
result = '<?xml version="1.0"?>~n<status>~n'.
result = result + "ok". /* or whatever turns your crank... */
result = result + "</status>~n".
end.
当输入到达时解析该行并做任何事情。将答案吐回/tmp/sample.out并循环。这不是很花哨,但如果你的需求适中,那很容易做到。如果您需要更高的可扩展性,健壮性或安全性,那么您最终可能需要更复杂的东西,但这至少可以让您开始进行原型设计。