【问题标题】:Simple SOAP progam简单的 SOAP 程序
【发布时间】:2013-09-12 08:03:14
【问题描述】:

我必须做一个简单的脚本(unix/linux 目标)来关闭打印后台处理程序的 log_file

假脱机程序提供了通过soap调用函数的机会,但我对此一无所知

这是函数:

- <!--  VPSX System Close Account file Command request 
  --> 
- <message name="VPSX_SystemCloseAcct">
  <part name="SessID" type="xsd:string" /> 
  <part name="VPSID" type="xsd:string" /> 
  </message>


- <!--  VPSX System close account file Command request/response 
  --> 
- <operation name="VPSX_SystemCloseAcct">
  <input message="lrs:VPSX_SystemCloseAcct" /> 
  <output message="lrs:VPSX_SystemCmdResponse" /> 
  </operation>


<!--  VPSX System close account file Command request/response 
  --> 
- <operation name="VPSX_SystemCloseAcct">
  <soap:operation soapAction="" /> 
- <input>
  <soap:body use="encoded" namespace="http://www.lrs.com"
encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" /> 
  </input>
- <output>
  <soap:body use="encoded" namespace="http://www.lrs.com"
encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" /> 
  </output>
  </operation>

有没有简单的方法(python?php?java?)来做到这一点?

我已经在 perl 中尝试过

#!/usr/bin/perl

use SOAP::Lite;

my $WSDL= 'http://myserver:81/lrs/webconnect/vpsx?trid=vpsx';

my $soap = SOAP::Lite->on_fault(\&SoapFault)
                        ->service($WSDL);

my $logon = $soap->Logon
(
   SOAP::Data->type('string')->name('Server')->value("VSVK1"),
   SOAP::Data->type('string')->name('UserID')->value("serv"),
   SOAP::Data->type('string')->name('Password')->value("serv")
);

$sessionID = $logon->result();

#my $chiusura = $soap->VPSX_SystemCloseAcct
#(
#   SOAP::Data->type('string')->name('SessID')->value($sessionID),
#   SOAP::Data->type('string')->name('VPSID')->value("") 
#);

my $logoff = $soap->Logoff
( 
  SOAP::Data->type('string')->name('SessID')->value($sessionID)
);

但是得到这个错误

String value expected instead of SOAP::Data reference

【问题讨论】:

  • 如果你想发送soap请求,你可以通过java来做,有一个soapui jar
  • 我必须通过脚本 bash 调度它来使用它
  • 尝试使用soap ui (soapui.org) 看看是否可以使用命令行运行它
  • 已安装soapui ...连接到wdsl并显示所有SOAP功能...但我不明白如何测试它们或将它们更改为脚本:O((

标签: java php python soap


【解决方案1】:
Try this URL
http://www.soapui.org/Test-Automation/integrating-with-junit.html

JUnit Integration

It is fairly easy to invoke the testrunner from your own JUnit-tests;

public void testRunner() throws Exception 
{
  SoapUITestCaseRunner runner = new SoapUITestCaseRunner(); 
  runner.setProjectFile( "src/dist/sample-soapui-project.xml" );
  runner.run(); 
}

The runner.run() call will throw an exception if an error occurs. If you want more control over your integration / error-reporting, a specific TestCase could be run as follows:

public void testTestCaseRunner() throws Exception 
{
  WsdlProject project = new WsdlProject( "src/dist/sample-soapui-project.xml" ); 
  TestSuite testSuite = project.getTestSuiteByName( "Test Suite" ); 
  TestCase testCase = testSuite.getTestCaseByName( "Test Conversions" );

  // create empty properties and run synchronously
  TestRunner runner = testCase.run( new PropertiesMap(), false ); 
  assertEquals( Status.FINISHED, runner.getStatus() ); 
}

【讨论】:

  • 希望对你有帮助:)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-04-12
  • 2011-08-22
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多