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

Re: [soaplite] .NET client and Soap-Lite Server?

Expand Messages
  • Weidong Wang
    Thanks alot. Last question, so far I can only get it to work with dispatch_with to give the full SoapAction specification (including the method name, like
    Message 1 of 11 , Sep 20, 2001
    • 0 Attachment
      Thanks alot.
       
      Last question, so far I can only get it to work with dispatch_with to give the full SoapAction specification (including the method name, like http://someurl/Test). I tried to use static dispatching dispatch_to('My::Class'). or dispatch_with with just the URI part, but the server complains:
       
      SOAP::Serializer::envelope: Client Failed to access class (Test): Can't locate Test.pm in @INC (@INC contains:) at (eval 88) line 3.
       
      I suppose I can use dispatch_with to list all my methods, but why doesn't static dispatch work?
       
      Thanks again.
       
      Weidong
      ----- Original Message -----
      Sent: Thursday, September 20, 2001 10:39 PM
      Subject: Re: [soaplite] .NET client and Soap-Lite Server?

      Hi, Weidong!

      Oops. You're right. Forgot to tell. SOAPAction is checked against
      URI#method combination, so just disable this check on server side
      with

        ->on_action(sub{return})

      I will probably do it by default in future versions, because SOAP1.2
      is heading toward optional SOAPAction, so server will not mandate it.

      As for @INC problem. It's rather feature I'd like to change. To get
      desired result you need to put your class ALSO in dispatch_to:

        ->dispatch_to('My::Class')

      You need to do it only if you are loading other classes (or you can
      follow Dana's advice). I'll update the code, so you won't need to do
      that.

      Best wishes, Paul.

      --- Weidong Wang <wwang@...> wrote:
      > Got past this one. But it still does not work for me.
      >
      > I am using Soap-Lite client to simulate .NET client by sending a
      > request with SoapAction in the format of:
      >
      >     SoapAction: http://someurl/Test     (Test is the method name)
      >
      > I tried both dispatch_to with static dispatch and dispatch_with for
      > SoapAction matching. But the server is not happy:
      >
      > SOAP::Serializer::envelope: Client SOAPAction shall match
      > 'uri#method' if present (got 'http://someurl/Test', expected
      > 'http://someuri/Test#Test'
      >
      > So it seems to me that the SOAP-Lite server is insisting on seeing
      > "uri#method" format, which .NET is not giving.
      >
      > Did I miss anything here?
      >
      > Thanks for all the help.
      >
      > Weidong
      >
      > ----- Original Message -----
      >   From: Dana Powers
      >   To: soaplite@yahoogroups.com
      >   Sent: Thursday, September 20, 2001 8:20 PM
      >   Subject: Re: [soaplite] .NET client and Soap-Lite Server?
      >
      >
      >   Either
      >
      >   ## Pull in file explicitly
      >   require '/path/to/your/modules/module.pm';
      >
      >   or
      >
      >   ## Add script specific directory to search path
      >   use lib '/path/to/your/modules/';
      >
      >   then
      >
      >   use module;
      >
      >   dpk
      >     ----- Original Message -----
      >     From: Weidong Wang
      >     To: soaplite@yahoogroups.com
      >     Sent: Thursday, September 20, 2001 5:00 PM
      >     Subject: Re: [soaplite] .NET client and Soap-Lite Server?
      >
      >
      >     Thanks for the quick reply. Now I have the problem that the
      > server complains that it fails to access my class: can't locate
      > myclass.pm in @INC (@INC contains:).
      >
      >     I tried adding
      >
      >     BEGIN {
      >         unshift @INC, '/users/wwang/soapgw';
      >     }
      >
      >     to the beginning of my server code. That didi not help. I set
      > env var INC. It did not work either. @INC is always empty. What do
      > I need to do to make it to search my own directory (or to get the
      > default @INC back)?
      >
      >     Thanks.
      >
      >     Weidong
      >
      >       ----- Original Message -----
      >       From: Paul Kulchenko
      >       To: soaplite@yahoogroups.com
      >       Sent: Thursday, September 20, 2001 3:26 PM
      >       Subject: Re: [soaplite] .NET client and Soap-Lite Server?
      >
      >
      >       Hi, Weidong!
      >
      >       Unfortunately I can't tell you how to change SOAPAction in
      > .NET on
      >       client side, but I can tell you how it can be done in
      > SOAP::Lite ;).
      >
      >       Instead of dispatch_to() method, you may try to use
      > dispatch_with()
      >       that allows you to bind any SOAPAction or URI to specific
      > class or
      >       object:
      >
      >       dispatch_with({
      >         'http://www.soaplite.com/' => 'My::Class',
      >         'http://www.soaplite.com/method' => 'Another::Class',
      >         'http://www.soaplite.com/obj' => My::Class->new,
      >       })
      >
      >       You can't bind to specific method, but there is no need for
      > that
      >       since you can always write:
      >
      >       dispatch_with({
      >         'http://www.soaplite.com/#methodA' => 'My::Class',
      >         'http://www.soaplite.com/#methodB' => 'My::Class',
      >       })
      >
      >       SERVICE DEPLOYMENT section has more information on that and
      >       t/03-server.t has tests that use dispatch_to and
      > dispatch_with calls.
      >
      >       You can use both dispatch_to and dispatch_with, but
      > dispatch_with is
      >       always matched BEFORE dispatch_to.
      >
      >       Also I would like to know how to do that in .NET on client
      > side.
      >
      >       >     BTW, I tried to look at the following link, but could
      > not get
      >       > there
      >       > http://perldoc.anidea.com/SOAP/Lite.html#INTEROPERABILITY
      >       Yes, perldoc.anidea seems to be down. You can always get this
      > info
      >       from CPAN:
      >
      >     
      >
      http://search.cpan.org/doc/KULCHENKO/SOAP-Lite-0.51/lib/SOAP/Lite.pm#INTEROPERABILITY
      >
      >       This link is version dependent, that's why I'm linking to
      > perldoc
      >       rather than to CPAN. Let me know how it works for you.
      >
      >       Best wishes, Paul.
      >
      >       --- Weidong Wang <wwang@...> wrote:
      >       > Hi:
      >       >
      >       >     Has anyone had any experience using a .NET client to
      > talk to a
      >       > SOAP-Lite server? I know the tricks needed to make
      > SOAP-Lite client
      >       > to talk to a .NET server, but how do you make the .NET
      > client to
      >       > generate the right SoapAction to trigger the soap-lite
      > server to
      >       > load the right package and invoke the right method?
      >       >
      >       >     BTW, I tried to look at the following link, but could
      > not get
      >       > there
      >       >
      >       > http://perldoc.anidea.com/SOAP/Lite.html#INTEROPERABILITY
      >       >
      >       >     Thanks.
      >       >
      >       > Weidong
      >       >
      >       >
      >
      >
      >       __________________________________________________
      >       Terrorist Attacks on U.S. - How can you help?
      >       Donate cash, emergency relief information
      >       http://dailynews.yahoo.com/fc/US/Emergency_Information/
      >
      >       To unsubscribe from this group, send an email to:
      >       soaplite-unsubscribe@yahoogroups.com
      >
      >
      >
      >       Your use of Yahoo! Groups is subject to the Yahoo! Terms of
      > Service.
      >
      >
      >     To unsubscribe from this group, send an email to:
      >     soaplite-unsubscribe@yahoogroups.com
      >
      >
      >
      >     Your use of Yahoo! Groups is subject to the Yahoo! Terms of
      > Service.
      >
      >
      >   To unsubscribe from this group, send an email to:
      >   soaplite-unsubscribe@yahoogroups.com
      >
      >
      >
      >   Your use of Yahoo! Groups is subject to the Yahoo! Terms of
      > Service.
      >
      >


      __________________________________________________
      Terrorist Attacks on U.S. - How can you help?
      Donate cash, emergency relief information
      http://dailynews.yahoo.com/fc/US/Emergency_Information/


      To unsubscribe from this group, send an email to:
      soaplite-unsubscribe@yahoogroups.com



      Your use of Yahoo! Groups is subject to the Yahoo! Terms of Service.
    • Paul Kulchenko
      Hi, Weidong! ... It s because you re using dispatch_to( My::Class ) instead of dispatch_to( Your::Class ). Just kidding. It s because you re making static
      Message 2 of 11 , Sep 20, 2001
      • 0 Attachment
        Hi, Weidong!

        > name, like http://someurl/Test). I tried to use static dispatching
        > dispatch_to('My::Class'). or dispatch_with with just the URI part,
        > but the server complains:
        >
        > SOAP::Serializer::envelope: Client Failed to access class (Test):
        > Can't locate Test.pm in @INC (@INC contains:) at (eval 88) line 3.
        It's because you're using dispatch_to('My::Class') instead of
        dispatch_to('Your::Class'). Just kidding.

        It's because you're making static dispatch for 'My::Class', but using
        'Test' class. My::Class is just an example. If you want dispatch to
        'Test' you need to do:

        ->dispatch_to('Test')
        ->dispatch_with({'http://someurl/Test' => 'Test'})

        and everything should work. Let me know if it doesn't.

        > I suppose I can use dispatch_with to list all my methods, but why
        > doesn't static dispatch work?
        You may, but you don't need to.

        Best wishes, Paul.

        --- Weidong Wang <wwang@...> wrote:
        > Thanks alot.
        >
        > Last question, so far I can only get it to work with dispatch_with
        > to give the full SoapAction specification (including the method
        > name, like http://someurl/Test). I tried to use static dispatching
        > dispatch_to('My::Class'). or dispatch_with with just the URI part,
        > but the server complains:
        >
        > SOAP::Serializer::envelope: Client Failed to access class (Test):
        > Can't locate Test.pm in @INC (@INC contains:) at (eval 88) line 3.
        >
        > I suppose I can use dispatch_with to list all my methods, but why
        > doesn't static dispatch work?
        >
        > Thanks again.
        >
        > Weidong
        > ----- Original Message -----
        > From: Paul Kulchenko
        > To: soaplite@yahoogroups.com
        > Sent: Thursday, September 20, 2001 10:39 PM
        > Subject: Re: [soaplite] .NET client and Soap-Lite Server?
        >
        >
        > Hi, Weidong!
        >
        > Oops. You're right. Forgot to tell. SOAPAction is checked against
        > URI#method combination, so just disable this check on server side
        > with
        >
        > ->on_action(sub{return})
        >
        > I will probably do it by default in future versions, because
        > SOAP1.2
        > is heading toward optional SOAPAction, so server will not mandate
        > it.
        >
        > As for @INC problem. It's rather feature I'd like to change. To
        > get
        > desired result you need to put your class ALSO in dispatch_to:
        >
        > ->dispatch_to('My::Class')
        >
        > You need to do it only if you are loading other classes (or you
        > can
        > follow Dana's advice). I'll update the code, so you won't need to
        > do
        > that.
        >
        > Best wishes, Paul.
        >
        > --- Weidong Wang <wwang@...> wrote:
        > > Got past this one. But it still does not work for me.
        > >
        > > I am using Soap-Lite client to simulate .NET client by sending
        > a
        > > request with SoapAction in the format of:
        > >
        > > SoapAction: http://someurl/Test (Test is the method
        > name)
        > >
        > > I tried both dispatch_to with static dispatch and dispatch_with
        > for
        > > SoapAction matching. But the server is not happy:
        > >
        > > SOAP::Serializer::envelope: Client SOAPAction shall match
        > > 'uri#method' if present (got 'http://someurl/Test', expected
        > > 'http://someuri/Test#Test'
        > >
        > > So it seems to me that the SOAP-Lite server is insisting on
        > seeing
        > > "uri#method" format, which .NET is not giving.
        > >
        > > Did I miss anything here?
        > >
        > > Thanks for all the help.
        > >
        > > Weidong
        > >
        > > ----- Original Message -----
        > > From: Dana Powers
        > > To: soaplite@yahoogroups.com
        > > Sent: Thursday, September 20, 2001 8:20 PM
        > > Subject: Re: [soaplite] .NET client and Soap-Lite Server?
        > >
        > >
        > > Either
        > >
        > > ## Pull in file explicitly
        > > require '/path/to/your/modules/module.pm';
        > >
        > > or
        > >
        > > ## Add script specific directory to search path
        > > use lib '/path/to/your/modules/';
        > >
        > > then
        > >
        > > use module;
        > >
        > > dpk
        > > ----- Original Message -----
        > > From: Weidong Wang
        > > To: soaplite@yahoogroups.com
        > > Sent: Thursday, September 20, 2001 5:00 PM
        > > Subject: Re: [soaplite] .NET client and Soap-Lite Server?
        > >
        > >
        > > Thanks for the quick reply. Now I have the problem that the
        > > server complains that it fails to access my class: can't locate
        > > myclass.pm in @INC (@INC contains:).
        > >
        > > I tried adding
        > >
        > > BEGIN {
        > > unshift @INC, '/users/wwang/soapgw';
        > > }
        > >
        > > to the beginning of my server code. That didi not help. I
        > set
        > > env var INC. It did not work either. @INC is always empty. What
        > do
        > > I need to do to make it to search my own directory (or to get
        > the
        > > default @INC back)?
        > >
        > > Thanks.
        > >
        > > Weidong
        > >
        > > ----- Original Message -----
        > > From: Paul Kulchenko
        > > To: soaplite@yahoogroups.com
        > > Sent: Thursday, September 20, 2001 3:26 PM
        > > Subject: Re: [soaplite] .NET client and Soap-Lite Server?
        > >
        > >
        > > Hi, Weidong!
        > >
        > > Unfortunately I can't tell you how to change SOAPAction
        > in
        > > .NET on
        > > client side, but I can tell you how it can be done in
        > > SOAP::Lite ;).
        > >
        > > Instead of dispatch_to() method, you may try to use
        > > dispatch_with()
        > > that allows you to bind any SOAPAction or URI to specific
        > > class or
        > > object:
        > >
        > > dispatch_with({
        > > 'http://www.soaplite.com/' => 'My::Class',
        > > 'http://www.soaplite.com/method' => 'Another::Class',
        > > 'http://www.soaplite.com/obj' => My::Class->new,
        > > })
        > >
        > > You can't bind to specific method, but there is no need
        > for
        > > that
        > > since you can always write:
        > >
        > > dispatch_with({
        > > 'http://www.soaplite.com/#methodA' => 'My::Class',
        > > 'http://www.soaplite.com/#methodB' => 'My::Class',
        > > })
        > >
        > > SERVICE DEPLOYMENT section has more information on that
        > and
        > > t/03-server.t has tests that use dispatch_to and
        > > dispatch_with calls.
        > >
        > > You can use both dispatch_to and dispatch_with, but
        > > dispatch_with is
        > > always matched BEFORE dispatch_to.
        > >
        > > Also I would like to know how to do that in .NET on
        > client
        > > side.
        > >
        > > > BTW, I tried to look at the following link, but
        > could
        > > not get
        > > > there
        > > >
        > http://perldoc.anidea.com/SOAP/Lite.html#INTEROPERABILITY
        > > Yes, perldoc.anidea seems to be down. You can always get
        > this
        > > info
        > > from CPAN:
        > >
        > >
        > >
        >
        >
        http://search.cpan.org/doc/KULCHENKO/SOAP-Lite-0.51/lib/SOAP/Lite.pm#INTEROPERABILITY
        > >
        > > This link is version dependent, that's why I'm linking to
        > > perldoc
        > > rather than to CPAN. Let me know how it works for you.
        > >
        > > Best wishes, Paul.
        >
        === message truncated ===


        __________________________________________________
        Terrorist Attacks on U.S. - How can you help?
        Donate cash, emergency relief information
        http://dailynews.yahoo.com/fc/US/Emergency_Information/
      • Weidong Wang
        Sorry, I think I made a mistake in describing my problem. On the server side, I implement all my methods (call it method1, method2, ..., methodn) in a package
        Message 3 of 11 , Sep 21, 2001
        • 0 Attachment
          Sorry, I think I made a mistake in describing my problem.
           
          On the server side, I implement all my methods (call it method1, method2, ..., methodn) in a package called Test.pm. In my daemon.pl, I "use Test", and do "dispatch_to('Test').
           
          With .NET client, the SoapAction looks like:
           
           
          With just "dispatch_to('Test')", I got the error like:
           
          SOAP::Serializer::envelope: Client Failed to access class (method1): Can't locate method1.pm in @INC (@INC contains:) at (eval 88) line 3.
          But if I say
           
              dispatch_with({'http://someurl/method1' => 'Test' });
           
          method1 call works. But other method calls do not. So I have to list them all to make all work. Is there an easy way to say all methods are in this Test class?
           
          Thanks.
           
          Weidong
           
          ----- Original Message -----
          Sent: Thursday, September 20, 2001 11:25 PM
          Subject: Re: [soaplite] .NET client and Soap-Lite Server?

          Hi, Weidong!

          > name, like http://someurl/Test). I tried to use static dispatching
          > dispatch_to('My::Class'). or dispatch_with with just the URI part,
          > but the server complains:
          >
          > SOAP::Serializer::envelope: Client Failed to access class (Test):
          > Can't locate Test.pm in @INC (@INC contains:) at (eval 88) line 3.
          It's because you're using dispatch_to('My::Class') instead of
          dispatch_to('Your::Class'). Just kidding.

          It's because you're making static dispatch for 'My::Class', but using
          'Test' class. My::Class is just an example. If you want dispatch to
          'Test' you need to do:

          ->dispatch_to('Test')
          ->dispatch_with({'http://someurl/Test' => 'Test'})

          and everything should work. Let me know if it doesn't.

          > I suppose I can use dispatch_with to list all my methods, but why
          > doesn't static dispatch work?
          You may, but you don't need to.

          Best wishes, Paul.

          --- Weidong Wang <wwang@...> wrote:
          > Thanks alot.
          >
          > Last question, so far I can only get it to work with dispatch_with
          > to give the full SoapAction specification (including the method
          > name, like http://someurl/Test). I tried to use static dispatching
          > dispatch_to('My::Class'). or dispatch_with with just the URI part,
          > but the server complains:
          >
          > SOAP::Serializer::envelope: Client Failed to access class (Test):
          > Can't locate Test.pm in @INC (@INC contains:) at (eval 88) line 3.
          >
          > I suppose I can use dispatch_with to list all my methods, but why
          > doesn't static dispatch work?
          >
          > Thanks again.
          >
          > Weidong
          >   ----- Original Message -----
          >   From: Paul Kulchenko
          >   To: soaplite@yahoogroups.com
          >   Sent: Thursday, September 20, 2001 10:39 PM
          >   Subject: Re: [soaplite] .NET client and Soap-Lite Server?
          >
          >
          >   Hi, Weidong!
          >
          >   Oops. You're right. Forgot to tell. SOAPAction is checked against
          >   URI#method combination, so just disable this check on server side
          >   with
          >
          >     ->on_action(sub{return})
          >
          >   I will probably do it by default in future versions, because
          > SOAP1.2
          >   is heading toward optional SOAPAction, so server will not mandate
          > it.
          >
          >   As for @INC problem. It's rather feature I'd like to change. To
          > get
          >   desired result you need to put your class ALSO in dispatch_to:
          >
          >     ->dispatch_to('My::Class')
          >
          >   You need to do it only if you are loading other classes (or you
          > can
          >   follow Dana's advice). I'll update the code, so you won't need to
          > do
          >   that.
          >
          >   Best wishes, Paul.
          >
          >   --- Weidong Wang <wwang@...> wrote:
          >   > Got past this one. But it still does not work for me.
          >   >
          >   > I am using Soap-Lite client to simulate .NET client by sending
          > a
          >   > request with SoapAction in the format of:
          >   >
          >   >     SoapAction: http://someurl/Test     (Test is the method
          > name)
          >   >
          >   > I tried both dispatch_to with static dispatch and dispatch_with
          > for
          >   > SoapAction matching. But the server is not happy:
          >   >
          >   > SOAP::Serializer::envelope: Client SOAPAction shall match
          >   > 'uri#method' if present (got 'http://someurl/Test', expected
          >   > 'http://someuri/Test#Test'
          >   >
          >   > So it seems to me that the SOAP-Lite server is insisting on
          > seeing
          >   > "uri#method" format, which .NET is not giving.
          >   >
          >   > Did I miss anything here?
          >   >
          >   > Thanks for all the help.
          >   >
          >   > Weidong
          >   >
          >   > ----- Original Message -----
          >   >   From: Dana Powers
          >   >   To: soaplite@yahoogroups.com
          >   >   Sent: Thursday, September 20, 2001 8:20 PM
          >   >   Subject: Re: [soaplite] .NET client and Soap-Lite Server?
          >   >
          >   >
          >   >   Either
          >   >
          >   >   ## Pull in file explicitly
          >   >   require '/path/to/your/modules/module.pm';
          >   >
          >   >   or
          >   >
          >   >   ## Add script specific directory to search path
          >   >   use lib '/path/to/your/modules/';
          >   >
          >   >   then
          >   >
          >   >   use module;
          >   >
          >   >   dpk
          >   >     ----- Original Message -----
          >   >     From: Weidong Wang
          >   >     To: soaplite@yahoogroups.com
          >   >     Sent: Thursday, September 20, 2001 5:00 PM
          >   >     Subject: Re: [soaplite] .NET client and Soap-Lite Server?
          >   >
          >   >
          >   >     Thanks for the quick reply. Now I have the problem that the
          >   > server complains that it fails to access my class: can't locate
          >   > myclass.pm in @INC (@INC contains:).
          >   >
          >   >     I tried adding
          >   >
          >   >     BEGIN {
          >   >         unshift @INC, '/users/wwang/soapgw';
          >   >     }
          >   >
          >   >     to the beginning of my server code. That didi not help. I
          > set
          >   > env var INC. It did not work either. @INC is always empty. What
          > do
          >   > I need to do to make it to search my own directory (or to get
          > the
          >   > default @INC back)?
          >   >
          >   >     Thanks.
          >   >
          >   >     Weidong
          >   >
          >   >       ----- Original Message -----
          >   >       From: Paul Kulchenko
          >   >       To: soaplite@yahoogroups.com
          >   >       Sent: Thursday, September 20, 2001 3:26 PM
          >   >       Subject: Re: [soaplite] .NET client and Soap-Lite Server?
          >   >
          >   >
          >   >       Hi, Weidong!
          >   >
          >   >       Unfortunately I can't tell you how to change SOAPAction
          > in
          >   > .NET on
          >   >       client side, but I can tell you how it can be done in
          >   > SOAP::Lite ;).
          >   >
          >   >       Instead of dispatch_to() method, you may try to use
          >   > dispatch_with()
          >   >       that allows you to bind any SOAPAction or URI to specific
          >   > class or
          >   >       object:
          >   >
          >   >       dispatch_with({
          >   >         'http://www.soaplite.com/' => 'My::Class',
          >   >         'http://www.soaplite.com/method' => 'Another::Class',
          >   >         'http://www.soaplite.com/obj' => My::Class->new,
          >   >       })
          >   >
          >   >       You can't bind to specific method, but there is no need
          > for
          >   > that
          >   >       since you can always write:
          >   >
          >   >       dispatch_with({
          >   >         'http://www.soaplite.com/#methodA' => 'My::Class',
          >   >         'http://www.soaplite.com/#methodB' => 'My::Class',
          >   >       })
          >   >
          >   >       SERVICE DEPLOYMENT section has more information on that
          > and
          >   >       t/03-server.t has tests that use dispatch_to and
          >   > dispatch_with calls.
          >   >
          >   >       You can use both dispatch_to and dispatch_with, but
          >   > dispatch_with is
          >   >       always matched BEFORE dispatch_to.
          >   >
          >   >       Also I would like to know how to do that in .NET on
          > client
          >   > side.
          >   >
          >   >       >     BTW, I tried to look at the following link, but
          > could
          >   > not get
          >   >       > there
          >   >       >
          > http://perldoc.anidea.com/SOAP/Lite.html#INTEROPERABILITY
          >   >       Yes, perldoc.anidea seems to be down. You can always get
          > this
          >   > info
          >   >       from CPAN:
          >   >
          >   >     
          >   >

          >
          http://search.cpan.org/doc/KULCHENKO/SOAP-Lite-0.51/lib/SOAP/Lite.pm#INTEROPERABILITY
          >   >
          >   >       This link is version dependent, that's why I'm linking to
          >   > perldoc
          >   >       rather than to CPAN. Let me know how it works for you.
          >   >
          >   >       Best wishes, Paul.
          >
          === message truncated ===


          __________________________________________________
          Terrorist Attacks on U.S. - How can you help?
          Donate cash, emergency relief information
          http://dailynews.yahoo.com/fc/US/Emergency_Information/


          To unsubscribe from this group, send an email to:
          soaplite-unsubscribe@yahoogroups.com



          Your use of Yahoo! Groups is subject to the Yahoo! Terms of Service.
        • Paul Kulchenko
          Hi, Weidong! ... You may specify not only SOAPAction, but also URI value: - dispatch_with({ http://someurl/ = Test }); which means ALL requests with this
          Message 4 of 11 , Sep 21, 2001
          • 0 Attachment
            Hi, Weidong!

            > But if I say
            >
            > dispatch_with({'http://someurl/method1' => 'Test' });
            >
            > method1 call works. But other method calls do not. So I have to
            > list them all to make all work. Is there an easy way to say all
            > methods are in this Test class?
            You may specify not only SOAPAction, but also URI value:

            ->dispatch_with({'http://someurl/' => 'Test' });

            which means "ALL requests with this URI will go to class 'Test'". URI
            should be EXACTLY the same, so check trailing slash in your case.

            I also double checked, and you DO NOT need to include
            ->on_dispatch('Test')
            with dispatch_with call mentioned above. This logic is already there
            ;).

            Best wishes, Paul.

            --- Weidong Wang <wwang@...> wrote:
            > Sorry, I think I made a mistake in describing my problem.
            >
            > On the server side, I implement all my methods (call it method1,
            > method2, ..., methodn) in a package called Test.pm. In my
            > daemon.pl, I "use Test", and do "dispatch_to('Test').
            >
            > With .NET client, the SoapAction looks like:
            >
            > SoapAction: http://someurl/method1
            >
            > With just "dispatch_to('Test')", I got the error like:
            >
            > SOAP::Serializer::envelope: Client Failed to access class
            > (method1): Can't locate method1.pm in @INC (@INC contains:) at
            > (eval 88) line 3.
            >
            > But if I say
            >
            > dispatch_with({'http://someurl/method1' => 'Test' });
            >
            > method1 call works. But other method calls do not. So I have to
            > list them all to make all work. Is there an easy way to say all
            > methods are in this Test class?
            >
            > Thanks.
            >
            > Weidong
            >
            > ----- Original Message -----
            > From: Paul Kulchenko
            > To: soaplite@yahoogroups.com
            > Sent: Thursday, September 20, 2001 11:25 PM
            > Subject: Re: [soaplite] .NET client and Soap-Lite Server?
            >
            >
            > Hi, Weidong!
            >
            > > name, like http://someurl/Test). I tried to use static
            > dispatching
            > > dispatch_to('My::Class'). or dispatch_with with just the URI
            > part,
            > > but the server complains:
            > >
            > > SOAP::Serializer::envelope: Client Failed to access class
            > (Test):
            > > Can't locate Test.pm in @INC (@INC contains:) at (eval 88) line
            > 3.
            > It's because you're using dispatch_to('My::Class') instead of
            > dispatch_to('Your::Class'). Just kidding.
            >
            > It's because you're making static dispatch for 'My::Class', but
            > using
            > 'Test' class. My::Class is just an example. If you want dispatch
            > to
            > 'Test' you need to do:
            >
            > ->dispatch_to('Test')
            > ->dispatch_with({'http://someurl/Test' => 'Test'})
            >
            > and everything should work. Let me know if it doesn't.
            >
            > > I suppose I can use dispatch_with to list all my methods, but
            > why
            > > doesn't static dispatch work?
            > You may, but you don't need to.
            >
            > Best wishes, Paul.
            >
            > --- Weidong Wang <wwang@...> wrote:
            > > Thanks alot.
            > >
            > > Last question, so far I can only get it to work with
            > dispatch_with
            > > to give the full SoapAction specification (including the method
            > > name, like http://someurl/Test). I tried to use static
            > dispatching
            > > dispatch_to('My::Class'). or dispatch_with with just the URI
            > part,
            > > but the server complains:
            > >
            > > SOAP::Serializer::envelope: Client Failed to access class
            > (Test):
            > > Can't locate Test.pm in @INC (@INC contains:) at (eval 88) line
            > 3.
            > >
            > > I suppose I can use dispatch_with to list all my methods, but
            > why
            > > doesn't static dispatch work?
            > >
            > > Thanks again.
            > >
            > > Weidong
            > > ----- Original Message -----
            > > From: Paul Kulchenko
            > > To: soaplite@yahoogroups.com
            > > Sent: Thursday, September 20, 2001 10:39 PM
            > > Subject: Re: [soaplite] .NET client and Soap-Lite Server?
            > >
            > >
            > > Hi, Weidong!
            > >
            > > Oops. You're right. Forgot to tell. SOAPAction is checked
            > against
            > > URI#method combination, so just disable this check on server
            > side
            > > with
            > >
            > > ->on_action(sub{return})
            > >
            > > I will probably do it by default in future versions, because
            > > SOAP1.2
            > > is heading toward optional SOAPAction, so server will not
            > mandate
            > > it.
            > >
            > > As for @INC problem. It's rather feature I'd like to change.
            > To
            > > get
            > > desired result you need to put your class ALSO in
            > dispatch_to:
            > >
            > > ->dispatch_to('My::Class')
            > >
            > > You need to do it only if you are loading other classes (or
            > you
            > > can
            > > follow Dana's advice). I'll update the code, so you won't
            > need to
            > > do
            > > that.
            > >
            > > Best wishes, Paul.
            > >
            > > --- Weidong Wang <wwang@...> wrote:
            > > > Got past this one. But it still does not work for me.
            > > >
            > > > I am using Soap-Lite client to simulate .NET client by
            > sending
            > > a
            > > > request with SoapAction in the format of:
            > > >
            > > > SoapAction: http://someurl/Test (Test is the method
            > > name)
            > > >
            > > > I tried both dispatch_to with static dispatch and
            > dispatch_with
            > > for
            > > > SoapAction matching. But the server is not happy:
            > > >
            > > > SOAP::Serializer::envelope: Client SOAPAction shall match
            > > > 'uri#method' if present (got 'http://someurl/Test',
            > expected
            > > > 'http://someuri/Test#Test'
            > > >
            > > > So it seems to me that the SOAP-Lite server is insisting on
            > > seeing
            > > > "uri#method" format, which .NET is not giving.
            > > >
            > > > Did I miss anything here?
            > > >
            > > > Thanks for all the help.
            > > >
            > > > Weidong
            > > >
            > > > ----- Original Message -----
            > > > From: Dana Powers
            > > > To: soaplite@yahoogroups.com
            > > > Sent: Thursday, September 20, 2001 8:20 PM
            > > > Subject: Re: [soaplite] .NET client and Soap-Lite Server?
            > > >
            > > >
            > > > Either
            > > >
            > > > ## Pull in file explicitly
            > > > require '/path/to/your/modules/module.pm';
            > > >
            > > > or
            > > >
            > > > ## Add script specific directory to search path
            > > > use lib '/path/to/your/modules/';
            > > >
            > > > then
            > > >
            > > > use module;
            > > >
            > > > dpk
            > > > ----- Original Message -----
            > > > From: Weidong Wang
            > > > To: soaplite@yahoogroups.com
            > > > Sent: Thursday, September 20, 2001 5:00 PM
            > > > Subject: Re: [soaplite] .NET client and Soap-Lite
            > Server?
            > > >
            > > >
            > > > Thanks for the quick reply. Now I have the problem that
            > the
            > > > server complains that it fails to access my class: can't
            > locate
            > > > myclass.pm in @INC (@INC contains:).
            > > >
            > > > I tried adding
            >
            === message truncated ===


            __________________________________________________
            Terrorist Attacks on U.S. - How can you help?
            Donate cash, emergency relief information
            http://dailynews.yahoo.com/fc/US/Emergency_Information/
          • Weidong Wang
            Sorry, Paul. URI s dispatch_with() does not work. I got client failed to access error. I did have trailign slash. Also, when you say on_dispatch(), you meant
            Message 5 of 11 , Sep 21, 2001
            • 0 Attachment
              Sorry, Paul. URI's dispatch_with() does not work. I got client failed to access error. I did have trailign slash.
               
              Also, when you say on_dispatch(), you meant dispatch_to()? The code does not like on_dispatch().
               
              Oh, to make the server responding to both .NET client and soap-lite client, I needed both dispatch_to('Class') and dispatch_with() with exact SoapAction for each method. That is what is working for me now.
               
               
              Weidong
               
              ----- Original Message -----
              Sent: Friday, September 21, 2001 2:11 PM
              Subject: Re: [soaplite] .NET client and Soap-Lite Server?

              Hi, Weidong!

              > But if I say
              >
              >     dispatch_with({'http://someurl/method1' => 'Test' });
              >
              > method1 call works. But other method calls do not. So I have to
              > list them all to make all work. Is there an easy way to say all
              > methods are in this Test class?
              You may specify not only SOAPAction, but also URI value:

                ->dispatch_with({'http://someurl/' => 'Test' });

              which means "ALL requests with this URI will go to class 'Test'". URI
              should be EXACTLY the same, so check trailing slash in your case.

              I also double checked, and you DO NOT need to include
              ->on_dispatch('Test')
              with dispatch_with call mentioned above. This logic is already there
              ;).

              Best wishes, Paul.

            Your message has been successfully submitted and would be delivered to recipients shortly.