【问题标题】:How to run commands through a SoapClient in JAVA如何在 JAVA 中通过 SoapClient 运行命令
【发布时间】:2013-09-11 21:19:26
【问题描述】:

这个简短的 php 代码在 java 中的等价物是什么?

$client = new SoapClient(NULL,
  array(
    "location" => "http://hostname:port/')",
    "uri" => "urn:String",
    "style" => SOAP_RPC,
    'login' => "soapuser",
    'password' => "soappass",
  )
);


$command = "This command will be sent to SOAP";
try {
  $result = $client->executeCommand(new SoapParam($command, "command"));
  return true;
}
catch (Exception $e)  {
  return false;
}

是否有可能用一个简短的 java 类达到相同的结果?

【问题讨论】:

  • 看看这个答案链接的资源:@​​987654321@——如果你去 DZone 教程并跳到 WS 客户端部分,你会看到你需要什么的解释为了能够使用类似于您上面的代码来调用服务。
  • @ Bass Jobsen - 我还没有找到如何在你提供的链接中运行这个 executeCommand

标签: java php soap rpc


【解决方案1】:

更新 2 我可能不明白你的问题。 (你能提供你的服务的 wdsl 吗?)创建一个像你的 php 代码一样的客户端:

使用:

package com.mkyong.client;

import java.net.URL;
import javax.xml.namespace.QName;
import javax.xml.ws.Service;
import com.mkyong.ws.HelloWorld;

public class HelloWorldClient{

    public static void main(String[] args) throws Exception {

    URL url = new URL("http://localhost:9999/ws/hello?wsdl");

        //1st argument service URI, refer to wsdl document above
    //2nd argument is service name, refer to wsdl document above
        QName qname = new QName("http://ws.mkyong.com/", "HelloWorldImplService");

        Service service = Service.create(url, qname);

        HelloWorld hello = service.getPort(HelloWorld.class);

        System.out.println(hello.getHelloWorldAsString("mkyong"));

    }

}

将此文件复制到 com/mkyong/client.要编译使用 javac com/mkyong/client/HelloWorldClient.java 并运行使用 java com/mkyong/client/HelloWorldClient,另请参阅:Compiling four java files within one package using javac 和 making a java package in the command line

“映射”到您的 php 示例 http://localhost:9999/ws/hello?wsdl 将等同于 http://hostname:port/ 和 executeCommand 将等同于 hello.getHelloWorldAsString。

更新试试 JAX-WS (http://jax-ws.java.net/)

来自http://www.mkyong.com/webservices/jax-ws/jax-ws-hello-world-example/:

package com.mkyong.ws;

import javax.jws.WebMethod;
import javax.jws.WebService;
import javax.jws.soap.SOAPBinding;
import javax.jws.soap.SOAPBinding.Style;

//Service Endpoint Interface
@WebService
@SOAPBinding(style = Style.RPC)
public interface HelloWorld{

    @WebMethod String getHelloWorldAsString(String name);

}

除了这里的答案:Working Soap client example,您还可以找到许多教程,告诉您如何用 java 编写一个肥皂客户端:

【讨论】:

  • 不幸的是,我不知道如何处理 "uri" => "urn:String", 以及用户名和密码 :(
【解决方案2】:

Groovy 是 Java 的超集,因此发布一个很棒的库,您可以在 groovy 中使用,并且可能使用与 php 完全相同的代码行来实现。 https://github.com/jwagenleitner/groovy-wslite

【讨论】:

    【解决方案3】:

    我猜您正在为 PHP 肥皂服务寻找基于 Java 的肥皂客户端。 前段时间我有类似的要求,可以在下面找到同样的好教程: http://development.nedeco.de/blog/2011/08/03/java-client-php-soapserver/

    另请参阅这本免费的方便书http://www.ksi.edu/thesis/rhuang/rhuang.pdf

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-05-18
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多