使用C#和PERL的SOAP服务器

本文关键字:SOAP 服务器 PERL 使用 | 更新日期: 2023-09-27 18:20:40

我有一个使用Perl和C#客户端的功能性SOAP服务器:

SOAP服务器(Perl):

use SOAP::Lite +trace;
use SOAP::Transport::HTTP;
my $daemon = SOAP::Transport::HTTP::Daemon
  -> new (LocalAddr => '123.123.123.123', LocalPort => 8001, listen => 5);
$daemon -> dispatch_to('Queryserver::queryserver');
print "Contact SOAP server at ", $daemon->url, "'n";
$daemon->handle();

C#客户端:

 public class Client : SoapHttpClientProtocol
    {
        public Client()
        {
            this.Url = "http://123.123.123.123:8001/QUERYSERVER";
        }
        [SoapDocumentMethod("urn:Queryserver#queryserver", RequestNamespace = "urn:Queryserver", ResponseNamespace = "urn:Queryserver", ResponseElementName = "queryserverResponse")]
        [return: System.Xml.Serialization.XmlElementAttribute("result")]
        public virtual string queryserver()
        {
            System.Object[] results = this.Invoke("queryserver", new object[0]);
            return ((string)(results[0].ToString()));
        }
    }
    class QueryServer
    {
        // this public string stores the cpuworld soap function, so the CPUObject can access it.
        public string resultQueryserverLoad;
        public void queryserver()
        {
            //bug fix below
            ServicePointManager.Expect100Continue = false;
            // end bugfix
            Client queryserverClient = new Client();
            string result;
            try
            {
                result = queryserverClient.queryserver();
            }
            catch (Exception exception)
            {
                result = exception.Message;
            }
            resultQueryserverLoad = result;
            //Console.WriteLine(result);
            //Console.ReadLine();
        }
    }

在C#客户端中,我在SOAP的帮助下调用"Queryserver"类和"Queryserver"方法,尽管我希望能够通过C#客户端调用其他类中的其他方法,但我如何在PERL SOAP服务器中包含额外的"dispatch_to('Queryserver::Queryserver');"?

例如

use SOAP::Lite +trace;
use SOAP::Transport::HTTP;
my $daemon = SOAP::Transport::HTTP::Daemon
  -> new (LocalAddr => '123.123.123.123', LocalPort => 8001, listen => 5);
$daemon -> dispatch_to('Queryserver::queryserver');
           **dispatch_to('<other class>::<other method>');**
print "Contact SOAP server at ", $daemon->url, "'n";
$daemon->handle();

使用C#和PERL的SOAP服务器

您没有阅读文档。dispatch_to采用列表。

dispatch_to(
    'Queryserver::queryserver',
    'OtherClass::other_method',
);

您可能只想定义一个类,并使其所有公共方法都可用于调度,而不是手动枚举许多完全限定的方法名。