如何用delphi做一个dll在服务端运行,来接收别人的http/xml请求,每次请求
都有xml数据包,处理完后给它响应,也是xml数据包,因没有做过这方面,
请各位给个思路,有例子最好

解决方案 »

  1.   

    这个比较简单,起一个Web Server Application,按需求在其中增加WebActionItem,处理http请求中的xml(比方说是在http form hidden field中送进来的),处理完了之后将结果写入response返回就可以了。
      

  2.   

    没必要用delphi开发dll,简单一点的用asp,复杂一点的用Web Service和SOAP。
    不过要注意的是xml的utf-8编码和gb2312编码
    用asp的例子:
    <%@ CODEPAGE = "65001" %>
    <%
    response.contenttype = "text/xml"
    on error resume next
    set xmldom= createobject("microsoft.xmldom")
    xmldom.async=false
    xmldom.load(request)
    if xmldom.parseerror.reason = "" then
    set conn= server.createobject("adodb.connection")
    set rs=server.createobject("adodb.recordset")
    conn.open "Provider=sqloledb;Data Source=127.0.0.1,1433;Network Library=DBMSSOCN;Initial Catalog=TestDb;User ID=sa;Password="
    set recordlist=xmldom.getelementsbytagname("user")
    querystr="SELECT TOP 0 * FROM Users"
    rs.open querystr,conn,1,3
    for i=0 to recordlist.length-1
    rs.addnew
    For Each Att in recordlist.item(i).attributes
    rs(Att.name).value = Att.value
    next 
    rs.update
    next
    rs.close
    conn.close
    set rs=nothing
    set conn=nothing
    set xmldom=nothing
    response.write "<?xml version ='1.0'?><root><result>Success</result></root>"
    else
    response.write "<?xml version ='1.0'?><root><result>Error</result></root>"
    end if
    %>
    客户端发送
    <?xml version="1.0"?>
    <root>
    <user name="Tome" age="10"/>
    <user name="Mike" age="20"/>
    <root>
    服务器端就可以将两条记录添加到数据库中并返回
    <?xml version ='1.0'?>
    <root>
    <result>Success</result>
    </root>
      

  3.   

    楼上的作法也不错,不过返回的xml最好不要拼串,还是用dom操作较好