第一次试用delphi 做SOAP 用的是delphi 2007 for win32 
  但是网上找了的资料基本是delphi 6的哪一份,如何设置IIS我都不太了解 一、fiel-->new-->other-->webservicws-->SOAP server Application
 二、选择 ISAPI/NSAPI dynamic link library
 三、 create Interface for SOAP Module选择 yes
 四、 add New Webservice 中的server name 中输入 test 点OK
 五、 fiel-->new-->other-->webservicws-->SOAP Server data Module
 六、 mudule name 中输入 dm 点OK
 七、放入 ADOconnection,adoquery,Datesetprovider 并设置完成
 八、编辑成DLL,名称为mytest.dll
 九、设置DLL文件所在目录为 IIS 虚拟目录 名称为 delphisrv且设置上了所有权限
 请问现在我在客户机上 
 一、 file -->new-->VCL Forms Application -Delphi for win32 放入 SoapConnection 及 ClientDataSet1 ,请问  SoapConnection的地址输入的是什么,如果我的IP是192.168.1.1的话
请问我有设置不对的地方吗,现在客户机上该如何设置才能连到服务器,我服务器上的DLL要再注册吗,请各位高手指点,谢谢!

解决方案 »

  1.   

    客户机应该知道服务器(iis)的ipiis的虚拟目录需要设为可执行、应用程序,
    可能还需要把iis允许执行isapi的禁止取消,或者仅仅允许你的isapi
    另外,最好把你的isapi的应用(目录)作为一个独立的进程予以运行,这样不会因为你这个isapi的问题而搞死所有isapi、甚至整个iis
      

  2.   

    客户机应该知道服务器(iis)的ip 这点是知道的
    iis的虚拟目录需要设为可执行、应用程序,  已设置
    可能还需要把iis允许执行isapi的禁止取消,或者仅仅允许你的isapi (这个还要看下如何设置)
    另外,最好把你的isapi的应用(目录)作为一个独立的进程予以运行,这样不会因为你这个isapi的问题而搞死所有isapi、甚至整个iis(这个还要看下如何设置)现在最主要的问题是URL地址我不知写什么
    是 http://ip地址/虚拟目录路径/DLL文件全名/WDSL 吗?
    端口是80吧?
      

  3.   

    另外想问下大家你们用delphi 写SOAP 程序,都是采用什么模式或者说机制,是用IIS运行还是用别的?
      

  4.   

    delphi写soap程序不就是webservice么,你可以编译成CGI或者ISAPI,一般放IIS下,也可以放在apache下
      

  5.   


    这我都知道,可是我不知道客户端的application 是通过什么地址连接的,我如何知道服务器对外提供的地址是什么?
    是不是少放了一些控件了,还是查看一些设置就可以了?
      

  6.   

    好像现在的问题是,我在IIS中输入地址什么也不显示(问题是我不知输入的地址是什么才算是正确的)
      

  7.   

    我前段时间连接同事的C# SOAP 就是这么连接的delphi没试过。
    注意 'http://localhost/WebService1/Service1.asmx?WSDL'   
    要加WSDL 
    还有最后的注册,我的源代码在公司,要不可以贴给你看看了。 GOOD LUCK。http://topic.csdn.net/t/20060610/10/4812977.html
      

  8.   

    谢谢,晚上回家再试下,现在估计是delphi 2007 的问题  我用delphi 7写的SOCKet的代码,用delphi 2007编辑了下就不会自动注册了.............
      

  9.   

    这么多人回都没结果?你那些步骤没错, 编译, 产生一个 dlliis 设置,任何网站,建一个虚拟目录,指明为要以执行 CGI/ISAPI
    回到上一极的 Web 服务扩展
    增加一个新web 服务扩展 把你的 dll 名称/目录指明
    或者你也可以允许所有未知 isapi 完成后,你的 webservice 在 www.dns.xxx/虚拟目录/名称.dll, 用 ie 打开, 会显示 WSDL 的为正确起用服务客户端完全没必要用什么 soapconnection 之类, 有几个选择
    1. soap conn 不过实再没意义2. 放一个 httprio, 里面设置一下地址, 客户端代码引用那个 xxxintf.pas 建服务端时产生的 xxxintf, xxximpl.pas, intf 是接口文件,不是 delphi 建的或别人提供的用 new->soap->wsdl import 也能产生这个 intf 文件, 这个 httprio 使用方法 (httprio as Iyourintf).方法3 注意看 xxxintf.pas 文件中有一个方法叫 GetIxxxx 这个是动态建立的 httprio 并且 as 成你要的接口返回,引用记数,自动释放yo
      

  10.   

    估计是这儿的问题,先谢谢,我晚上再测试下,我少了这了步
    sz_haitao提到了这个问题,但是我没有细入去查看,因为他说是可能,怪我不细心去注意细节,当时又没有找到配置的地方,就没有在意!·
      

  11.   

    注意几点:1、服务端:其实就是定义接口,实现接口,导出接口文档(和客户端共享);
    2、客户端:需要连接服务端的SOAP组件(设置地址、端口号);
    3、配置IIS服务器,这个上面已经讲了,注意一下,我当时也是调试好久才成功的;上面3点比较抽象,只是一个思路,没有具体实现;
    如果你搞不定,再发帖再说吧;
      

  12.   

    pbedu - Service Info Page   pbedu - PortTypes: 
        
      IPBEDUServer [WSDL] 
     
      IAppServer [WSDL] 
    AS_ApplyUpdates
    AS_GetRecords
    AS_DataRequest
    AS_GetProviderNames
    AS_GetParams
    AS_RowRequest
    AS_Execute
     
      IAppServerSOAP [WSDL] 
    SAS_ApplyUpdates
    SAS_GetRecords
    SAS_DataRequest
    SAS_GetProviderNames
    SAS_GetParams
    SAS_RowRequest
    SAS_Execute
     
      Ipbdm [WSDL] 
    SAS_ApplyUpdates
    SAS_GetRecords
    SAS_DataRequest
    SAS_GetProviderNames
    SAS_GetParams
    SAS_RowRequest
    SAS_Execute
     
      IWSDLPublish [WSDL]   Lists all the PortTypes published by this Service GetPortTypeList
    GetWSDLForPortType
    GetTypeSystemsList
    GetXSDForTypeSystem
     
      WSIL:  Link to WS-Inspection document of Services here 终于在IE中有提示了
    不过还有问题,再发贴子问吧!
      

  13.   

    新的贴子是:
    http://topic.csdn.net/u/20100104/02/b44dbd60-3fe2-4978-b6d5-cad2cfddbe78.html?94358
      

  14.   

    http://topic.csdn.net/u/20100909/15/6d648639-3b21-4a10-8299-66a5eca8a196.html