Loading ...
Sorry, an error occurred while loading the content.
 

Re: Perl SOAP server and .Net Client

Expand Messages
  • Kedar Barve
    ... (http://groups.yahoo.com/group/soaplite/message/2470) ... I do remember that thread, I had similiar problems. But I exactly don t remember what fixed it.
    Message 1 of 8 , Jul 29, 2003
      --- In soaplite@yahoogroups.com, "rathi_sk" <rathi_sk@y...> wrote:
      > Hi Kedar
      >
      > I saw a thread
      (http://groups.yahoo.com/group/soaplite/message/2470)
      > where you faced a similar issue. Anyways
      >

      I do remember that thread, I had similiar problems. But I exactly
      don't remember what fixed it. But anyways i am just trying to
      traverse back in time and trying to remember something. I had to
      modify the WSDL by hand. The WSDL generated by the WSDL::Generator is
      not perfect.

      try to incorporate these changes to your WSDL:

      <?xml version="1.0"?>
      <definitions name="ScriptLauncher"
      xmlns:xsd="http://www.w3.org/2001/XMLSchema"
      xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/"
      [NEW] xmlns:soapenc="http://schemas.xmlsoap.org/soap/encoding/"
      [NEW] targetNamespace="http://localhost:9088/ScriptLauncher.wsdl"
      [NEW] xmlns:tns="http://localhost:9088/ScriptLauncher.wsdl"
      xmlns="http://schemas.xmlsoap.org/wsdl/"
      [NEW] xmlns:xsdl="http://localhost:9088">


      <types>
      [NEW]<xsd:schema targetNamespace="http://localhost:9088">
      ....
      ....
      ....




      > 1) following is my script which launches my server


      > #----- begin proxy script ------
      >
      > use ScriptLauncher;
      > use Getopt::Long;
      > use SOAP::Lite +trace => 'all';
      >
      > my $port = "8080";
      > GetOptions( "port=s" => \$port );
      > &startServer();
      >
      > sub startServer(){
      > $daemon = SOAP::Transport::HTTP::Daemon-> new (LocalPort =>
      $port)-
      > > dispatch_to('ScriptLauncher');
      > $daemon->handle;
      >
      > }
      >
      > # ---- end of proxy script ----
      >

      Does the above dispatch works correctly? Does the script finds
      the 'ScriptLauncher.pm'?

      if not, you can also add one more param to the dispatch_to function:

      dispatch_to('your module path', 'module')

      let me know..I am not sure whether this will work, but hopefully we
      move ahead.

      kedar
    • rathi_sk
      Hi Kedar Firstly let me thank you for the quick reply. I really appreciate your help. 1) I did modify the wsdl as you had asked me to. But now i get a
      Message 2 of 8 , Jul 29, 2003
        Hi Kedar

        Firstly let me thank you for the quick reply. I really appreciate
        your help.

        1) I did modify the wsdl as you had asked me to. But now i get a
        different error. as follows
        System.Reflection.TargetInvocationException:
        Exception has been thrown by the target of an invocation. --->
        System.Web.Services.Protocols.SoapHeaderException:
        Denied access to method (downloadBatchRequest) in class (main) at
        c:/Perl/site/lib/SOAP/Lite.pm line 2166.

        2) I can access the server from a perl client without any problems.
        And it does execute the methods.

        3) My modified wsdl is as follows

        # --------------- begin wsdl --------------
        <?xml version="1.0"?>
        <definitions name="ScriptLauncher"
        xmlns:xsd="http://www.w3.org/2001/XMLSchema"
        xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/"
        xmlns:soapenc="http://schemas.xmlsoap.org/soap/encoding/"
        targetNamespace="http://localhost:9088/ScriptLauncher.wsdl"
        xmlns:tns="http://localhost:9088/ScriptLauncher.wsdl"
        xmlns="http://schemas.xmlsoap.org/wsdl/"
        xmlns:xsdl="http://localhost:9088">
        <types>
        <xsd:schema
        targetNamespace="http://localhost:9088">
        <xsd:element name="extractInterestRequest"
        type="xsd:string" />
        <xsd:element name="extractInterestResponse"
        type="xsd:string" />
        <xsd:element name="extractCDPricesRequest"
        type="xsd:string" />
        <xsd:element name="extractCDPricesResponse"
        type="xsd:string" />
        <xsd:element name="runPositionRecRequest"
        type="xsd:string" />
        <xsd:element name="runPositionRecResponse"
        type="xsd:string" />
        <xsd:element name="runCashRecRequest"
        type="xsd:string" />
        <xsd:element name="runCashRecResponse"
        type="xsd:string" />
        <xsd:element name="downloadBatchRequest"
        type="xsd:string" />
        <xsd:element name="downloadBatchResponse"
        type="xsd:string" />
        <xsd:element name="downloadFileIdRequest"
        type="xsd:string" />
        <xsd:element name="downloadFileIdResponse"
        type="xsd:string" />
        </xsd:schema>
        </types>
        <message name="downloadBatchRequest">
        <part name="downloadBatchRequestSoapMsg"
        element="xsdl:downloadBatchRequest"/>
        </message>
        <message name="downloadBatchResponse">
        <part name="downloadBatchResponseSoapMsg"
        element="xsdl:downloadBatchResponse"/>
        </message>
        <message name="downloadFileIdRequest">
        <part name="downloadFileIdRequestSoapMsg"
        element="xsdl:downloadFileIdRequest"/>
        </message>
        <message name="downloadFileIdResponse">
        <part name="downloadFileIdResponseSoapMsg"
        element="xsdl:downloadFileIdResponse"/>
        </message>
        <message name="extractCDPricesRequest">
        <part name="extractCDPricesRequestSoapMsg"
        element="xsdl:extractCDPricesRequest"/>
        </message>
        <message name="extractCDPricesResponse">
        <part name="extractCDPricesResponseSoapMsg"
        element="xsdl:extractCDPricesResponse"/>
        </message>
        <message name="extractInterestRequest">
        <part name="extractInterestRequestSoapMsg"
        element="xsdl:extractInterestRequest"/>
        </message>
        <message name="extractInterestResponse">
        <part name="extractInterestResponseSoapMsg"
        element="xsdl:extractInterestResponse"/>
        </message>
        <message name="runCashRecRequest">
        <part name="runCashRecRequestSoapMsg"
        element="xsdl:runCashRecRequest"/>
        </message>
        <message name="runCashRecResponse">
        <part name="runCashRecResponseSoapMsg"
        element="xsdl:runCashRecResponse"/>
        </message>
        <message name="runPositionRecRequest">
        <part name="runPositionRecRequestSoapMsg"
        element="xsdl:runPositionRecRequest"/>
        </message>
        <message name="runPositionRecResponse">
        <part name="runPositionRecResponseSoapMsg"
        element="xsdl:runPositionRecResponse"/>
        </message>
        <portType name="ScriptLauncherScriptLauncherPortType">
        <operation name="downloadBatch">
        <input message="tns:downloadBatchRequest" />
        <output message="tns:downloadBatchResponse" />
        </operation>
        <operation name="downloadFileId">
        <input message="tns:downloadFileIdRequest" />
        <output
        message="tns:downloadFileIdResponse" />
        </operation>
        <operation name="extractCDPrices">
        <input message="tns:extractCDPricesRequest" />
        <output
        message="tns:extractCDPricesResponse" />
        </operation>
        <operation name="extractInterest">
        <input message="tns:extractInterestRequest" />
        <output
        message="tns:extractInterestResponse" />
        </operation>
        <operation name="runCashRec">
        <input message="tns:runCashRecRequest" />
        <output message="tns:runCashRecResponse" />
        </operation>
        <operation name="runPositionRec">
        <input message="tns:runPositionRecRequest" />
        <output
        message="tns:runPositionRecResponse" />
        </operation>
        </portType>
        <binding name="ScriptLauncherScriptLauncherBinding"
        type="tns:ScriptLauncherScriptLauncherPortType">
        <soap:binding style="document"
        transport="http://schemas.xmlsoap.org/soap/http"/>
        <operation name="downloadBatch">
        <soap:operation style="document"
        soapAction=""/>
        <input>
        <soap:body use="literal"/>
        </input>
        <output>
        <soap:body use="literal"/>
        </output>
        </operation>
        <operation name="downloadFileId">
        <soap:operation style="document"
        soapAction=""/>
        <input>
        <soap:body use="literal"/>
        </input>
        <output>
        <soap:body use="literal"/>
        </output>
        </operation>
        <operation name="extractCDPrices">
        <soap:operation style="document"
        soapAction=""/>
        <input>
        <soap:body use="literal"/>
        </input>
        <output>
        <soap:body use="literal"/>
        </output>
        </operation>
        <operation name="extractInterest">
        <soap:operation style="document"
        soapAction=""/>
        <input>
        <soap:body use="literal"/>
        </input>
        <output>
        <soap:body use="literal"/>
        </output>
        </operation>
        <operation name="runCashRec">
        <soap:operation style="document"
        soapAction=""/>
        <input>
        <soap:body use="literal"/>
        </input>
        <output>
        <soap:body use="literal"/>
        </output>
        </operation>
        <operation name="runPositionRec">
        <soap:operation style="document"
        soapAction=""/>
        <input>
        <soap:body use="literal"/>
        </input>
        <output>
        <soap:body use="literal"/>
        </output>
        </operation>
        </binding>
        <service name="ScriptLauncher">
        <documentation>
        SOAP Interface for all backoffice scripts
        </documentation>
        <port name="ScriptLauncherScriptLauncherPort"
        binding="tns:ScriptLauncherScriptLauncherBinding">
        <soap:address
        location="http://localhost:9088/ScriptLauncher"/>
        </port>
        </service>
        </definitions>

        # --------------- end of wsdl --------------

        --- In soaplite@yahoogroups.com, "Kedar Barve" <kedsbarve@y...> wrote:
        > --- In soaplite@yahoogroups.com, "rathi_sk" <rathi_sk@y...> wrote:
        > > Hi Kedar
        > >
        > > I saw a thread
        > (http://groups.yahoo.com/group/soaplite/message/2470)
        > > where you faced a similar issue. Anyways
        > >
        >
        > I do remember that thread, I had similiar problems. But I exactly
        > don't remember what fixed it. But anyways i am just trying to
        > traverse back in time and trying to remember something. I had to
        > modify the WSDL by hand. The WSDL generated by the WSDL::Generator
        is
        > not perfect.
        >
        > try to incorporate these changes to your WSDL:
        >
        > <?xml version="1.0"?>
        > <definitions name="ScriptLauncher"
        > xmlns:xsd="http://www.w3.org/2001/XMLSchema"
        > xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/"
        > [NEW] xmlns:soapenc="http://schemas.xmlsoap.org/soap/encoding/"
        > [NEW] targetNamespace="http://localhost:9088/ScriptLauncher.wsdl"
        > [NEW] xmlns:tns="http://localhost:9088/ScriptLauncher.wsdl"
        > xmlns="http://schemas.xmlsoap.org/wsdl/"
        > [NEW] xmlns:xsdl="http://localhost:9088">
        >
        >
        > <types>
        > [NEW]<xsd:schema targetNamespace="http://localhost:9088">
        > ....
        > ....
        > ....
        >
        >
        >
        >
        > > 1) following is my script which launches my server
        >
        >
        > > #----- begin proxy script ------
        > >
        > > use ScriptLauncher;
        > > use Getopt::Long;
        > > use SOAP::Lite +trace => 'all';
        > >
        > > my $port = "8080";
        > > GetOptions( "port=s" => \$port );
        > > &startServer();
        > >
        > > sub startServer(){
        > > $daemon = SOAP::Transport::HTTP::Daemon-> new (LocalPort =>
        > $port)-
        > > > dispatch_to('ScriptLauncher');
        > > $daemon->handle;
        > >
        > > }
        > >
        > > # ---- end of proxy script ----
        > >
        >
        > Does the above dispatch works correctly? Does the script finds
        > the 'ScriptLauncher.pm'?
        >
        > if not, you can also add one more param to the dispatch_to function:
        >
        > dispatch_to('your module path', 'module')
        >
        > let me know..I am not sure whether this will work, but hopefully we
        > move ahead.
        >
        > kedar
      • Kedar Barve
        ... try this. I guess, this should fix this error for now. - dispatch_to( your module dir path , [ w:]+ ) also include the export statements with the list of
        Message 3 of 8 , Jul 29, 2003
          > 1) I did modify the wsdl as you had asked me to. But now i get a
          > different error. as follows
          > System.Reflection.TargetInvocationException:
          > Exception has been thrown by the target of an invocation. --->
          > System.Web.Services.Protocols.SoapHeaderException:
          > Denied access to method (downloadBatchRequest) in class (main) at
          > c:/Perl/site/lib/SOAP/Lite.pm line 2166.

          try this. I guess, this should fix this error for now.

          -> dispatch_to('your module dir path','[\w:]+')

          also include the export statements with the list of functions
          exported in your perl module, that way you normally do it while
          creating a perl package.

          >
          > 2) I can access the server from a perl client without any problems.
          > And it does execute the methods.

          Thats good.
          >

          Let me know how it goes. good luck!!

          cheers!
          kedar
        • rathi_sk
          Hi Kedar i did what you had suggested but i now get a different error System.Reflection.TargetInvocationException: Exception has been thrown by the target of
          Message 4 of 8 , Jul 29, 2003
            Hi Kedar

            i did what you had suggested but i now get a different error

            System.Reflection.TargetInvocationException:
            Exception has been thrown by the target of an invocation. --->
            System.Web.Services.Protocols.SoapHeaderException:
            Failed to locate method (downloadBatchRequest) in class (main) at
            c:/Perl/site/lib/SOAP/Lite.pm line 2239.

            This is how the modified line looks like
            $daemon = SOAP::Transport::HTTP::Daemon-> new (LocalPort => $port)
            -> dispatch_to('C:\reconciliation\NebInterface','[\w:]+');
            Existing code
            #$daemon = SOAP::Transport::HTTP::Daemon-> new (LocalPort => $port)->
            dispatch_to('ScriptLauncher');


            thanks
            suren


            --- In soaplite@yahoogroups.com, "Kedar Barve" <kedsbarve@y...> wrote:
            >
            > > 1) I did modify the wsdl as you had asked me to. But now i get a
            > > different error. as follows
            > > System.Reflection.TargetInvocationException:
            > > Exception has been thrown by the target of an invocation. --->
            > > System.Web.Services.Protocols.SoapHeaderException:
            > > Denied access to method (downloadBatchRequest) in class (main) at
            > > c:/Perl/site/lib/SOAP/Lite.pm line 2166.
            >
            > try this. I guess, this should fix this error for now.
            >
            > -> dispatch_to('your module dir path','[\w:]+')
            >
            > also include the export statements with the list of functions
            > exported in your perl module, that way you normally do it while
            > creating a perl package.
            >
            > >
            > > 2) I can access the server from a perl client without any
            problems.
            > > And it does execute the methods.
            >
            > Thats good.
            > >
            >
            > Let me know how it goes. good luck!!
            >
            > cheers!
            > kedar
          • rathi_sk
            Hi Kedar Is it possible for you to send me the working wsdl and the server (proxy) from your project. 1) I noted a few things my method is called the
            Message 5 of 8 , Jul 29, 2003
              Hi Kedar

              Is it possible for you to send me the working wsdl and the server
              (proxy) from your project.

              1) I noted a few things my method is called the downloadBatch but
              when the webservicestudio client requests it i get a downloadRequest
              method not found. I dont know how 'Request' got appended. But that is
              what the wsdl has.

              2)the module which implements the methods are in the same directory
              in which my proxy server runs.

              3) I used TCPmon to look at the network activity and the messages
              sent from a soap::lite client is significantly different from the one
              sent by WebServiceStudio.

              thanks
              suren

              --- In soaplite@yahoogroups.com, "rathi_sk" <rathi_sk@y...> wrote:
              > Hi Kedar
              >
              > i did what you had suggested but i now get a different error
              >
              > System.Reflection.TargetInvocationException:
              > Exception has been thrown by the target of an invocation. --->
              > System.Web.Services.Protocols.SoapHeaderException:
              > Failed to locate method (downloadBatchRequest) in class (main) at
              > c:/Perl/site/lib/SOAP/Lite.pm line 2239.
              >
              > This is how the modified line looks like
              > $daemon = SOAP::Transport::HTTP::Daemon-> new (LocalPort => $port)
              > -> dispatch_to('C:\reconciliation\NebInterface','[\w:]+');
              > Existing code
              > #$daemon = SOAP::Transport::HTTP::Daemon-> new (LocalPort => $port)-
              >
              > dispatch_to('ScriptLauncher');
              >
              >
              > thanks
              > suren
              >
              >
              > --- In soaplite@yahoogroups.com, "Kedar Barve" <kedsbarve@y...>
              wrote:
              > >
              > > > 1) I did modify the wsdl as you had asked me to. But now i get
              a
              > > > different error. as follows
              > > > System.Reflection.TargetInvocationException:
              > > > Exception has been thrown by the target of an invocation. --->
              > > > System.Web.Services.Protocols.SoapHeaderException:
              > > > Denied access to method (downloadBatchRequest) in class (main)
              at
              > > > c:/Perl/site/lib/SOAP/Lite.pm line 2166.
              > >
              > > try this. I guess, this should fix this error for now.
              > >
              > > -> dispatch_to('your module dir path','[\w:]+')
              > >
              > > also include the export statements with the list of functions
              > > exported in your perl module, that way you normally do it while
              > > creating a perl package.
              > >
              > > >
              > > > 2) I can access the server from a perl client without any
              > problems.
              > > > And it does execute the methods.
              > >
              > > Thats good.
              > > >
              > >
              > > Let me know how it goes. good luck!!
              > >
              > > cheers!
              > > kedar
            Your message has been successfully submitted and would be delivered to recipients shortly.