标签: wsdl

给定WSDL文件在java中创建SOAP客户端

我从来没有在java中使用任何SOAP库,所以我为这个问题的新概率道歉.

我正在尝试利用Tivoli Endpoint Manager的SOAP API.我使用wsimport.exe(在jdk中提供)从提供的WSDL文件生成了必要的类.

现在我提供了大量的类,我假设它们将信息打包成xml格式,但我不确定如何处理它们.我已经阅读了所提供的文档,但它最多是模糊的.

wsimport生成的类如下:

由wsimport生成的类

根据文档,以下Perl代码适用于查询Tivoli的API

use SOAP::Lite;
#arguments: [hostname] [username] [password] [relevance expression]
#hostname only, e.g. ’example.com’ rather than ’http://example.com/webreports’
my $host = $ARGV[0];
my $username = SOAP::Data->name(’username’ => $ARGV[1] );
my $password = SOAP::Data->name(’password’ => $ARGV[2] );
my $expr = SOAP::Data->name(’relevanceExpr’ => $ARGV[3] );
my $service = SOAP::Lite -> uri( ’http://’ . $host . ’/webreports?wsdl’ )
-> proxy( $host );
my $result = $service -> GetRelevanceResult( $expr, $username, $password );
if( $result->fault ) {
     print "faultcode: …
Run Code Online (Sandbox Code Playgroud)

java perl soap wsdl web-services

17
推荐指数
1
解决办法
9万
查看次数

在php中强制重新缓存WSDL

我知道如何在PHP中禁用WSDL-cache,但是强制重新缓存WSDL呢?

这就是我尝试的:我运行我的代码,缓存设置为禁用,并且新方法显示为受到尊重.然后我激活了缓存,但由于某种原因,我的旧的非工作wsdl再次出现.那么:我如何强制我的新WSDL覆盖我的旧缓存?

php wsdl caching web-services

16
推荐指数
2
解决办法
2万
查看次数

如何强制WCF使用所需的方法参数(minoccurs ="1")自动生成WSDL?

在使用WCF和OperationContracts时,我定义了以下方法:

    [OperationContract]
    [FaultContract(typeof(ValidationFault))]
    [FaultContract(typeof(FaultException<ExceptionDetail>))]
    int DoSomething(int someId, MyComplexType messageData);
Run Code Online (Sandbox Code Playgroud)

当它由WCF运行时转换为WSDL时,最终会为参数someId和messageData列出minoccurs ="0"(如果缺少这些参数,则会抛出运行时错误).

如果我使用SoapUI生成代理,我会得到如下所示的内容:

  <com:DoSomething>
     <!--Optional-->
     <com:EventId>1</com:EventId>
     <!--Optional-->
     <com:myComplexType >
        <com:id>1</com:id>
     </com:myComplexType >
  </com:DoSomething>
Run Code Online (Sandbox Code Playgroud)

MyComplexType中的id字段使用IsRequired ="true"标记为DataMemeber属性,因此公开为必需.

显然,WSDL指定参数是不可选的是可选的,但是我看不到任何明显的方法来标记OperationContract以迫使WCF根据需要识别和公开这些参数.

我有点困惑,似乎没有明显的方法这样做(阅读intellisense/msdn/google).或者我会失明并忽略一些明显的东西.

有线索吗?

wcf soa soap wsdl

16
推荐指数
1
解决办法
1万
查看次数

将SOAP隐式标头添加到WSDL

我的问题与此类似.当WSDL没有定义它时,如何传递肥皂头?但是不同.

对于我使用的Web服务,所有方法都需要在SOAP标头内以明文形式发送的身份验证.但是,我的WSDL不包含任何soap标头信息.我有一个自定义平台工具,我必须使用它来从WSDL生成代码.由于标题信息不可用,我无法直接使用生成的类 - 我不想手动修改代码以适应标题.

我尝试在WSDL中指定SOAP标头但是我无法获得正确的名称空间.WSDL在这里https://stage.totalcheck.sensis.com.au/service/webservice?wsdl,SOAP标头如下:

    <soapenv:Header>
        <wsse:Security>
            <wsse:UsernameToken>
                <wsse:Username>username</wsse:Username>
                <wsse:Password>password</wsse:Password>
            </wsse:UsernameToken>
        </wsse:Security>
   </soapenv:Header>
Run Code Online (Sandbox Code Playgroud)

有人能帮我吗?谢谢!

soap wsdl soapheader

16
推荐指数
1
解决办法
5万
查看次数

相对WSDL soap:地址位置

我是否可以在WSDL中相对于WSDL位置具有soap:address位置,或者至少相对于服务器?比如我想写:

<soap:address location="https://exampleserver.com/axis2/services/ExampleService" />
Run Code Online (Sandbox Code Playgroud)

如:

<soap:address location="/axis2/services/ExampleService" />
Run Code Online (Sandbox Code Playgroud)

这样可以更快地部署到多个服务器,例如测试服务器.此外,在axis2c的情况下,如果我希望从HTTP或HTTPS使用我的服务,使用我的服务的开发人员的生活变得更加困难,因为他们不能简单地从它的默认位置"?WSDL"导入WSDL.

wsdl web-services axis2c

16
推荐指数
1
解决办法
5万
查看次数

在不下载WSDL的情况下实例化JAX-WS服务?

我有一个Web服务,我有JAX-WS生成的客户端绑定,如下所示:

// web service client generated by JAX-WS
@WebServiceClient( ... )
public class WebService_Service extends Service {

    public WebService_Service(URL wsdlLocation, QName serviceName) {
        super(wsdlLocation, serviceName);
    }

    WebService getWebServiceSOAP() {
        // ...
    }
}
Run Code Online (Sandbox Code Playgroud)

我希望能够创建一个指向远程服务的实例,例如:

WebService_Service svc = new WebService_Service(
    new URL("http://www.example.com/ws?wsdl"),
    new QName("http://www.example.com/ws", "WebService"));
Run Code Online (Sandbox Code Playgroud)

但是下载了http://www.example.com/ws?wsdl我不想做的WSDL .

有没有办法停止下载该WSDL,但仍然指向同一个端点?

java wsdl web-services jax-ws

16
推荐指数
2
解决办法
2万
查看次数

无法使用WSDL :: Generator运行Perl Web服务

我已经尝试了两周在Perl(with WSDL::Generator)中创建一个Web服务,并用Perl编写的客户端调用它.

现在我尝试使用专门用于WSDL的库提供的示例:Soap::Lite 但是我得到一个不断出现的错误

404 file not found at c.PL at line 7.
Run Code Online (Sandbox Code Playgroud)

你能帮我解决一下吗?

这是我的代码:

WorldFunctions.pm (C:\ Perl\SOAP-Lite\WorldFunctions.pm):该类

package WorldFunctions;
    sub new { bless {}, shift; }
    sub Hello { my ($s, $name) = @_;
            return 'Hello, ' . $name . "\n";
    }
    sub GoodBye { my ($s, $name) = @_;
            return 'Goodbye, ' . $name . "\n";
    }
Run Code Online (Sandbox Code Playgroud)

a.pl (C:\ Perl\SOAP-Lite\a.pl):创建WorldFunctions.pm类的WSDL文件

#!/usr/bin/perl
use WSDL::Generator;
my $init = {
        'schema_namesp' => 'http://localhost/world/WorldFunctions.xsd',
        'services'      => 'WorldFunctions',
        'service_name'  => 'WorldFunctions', …
Run Code Online (Sandbox Code Playgroud)

perl soap wsdl

16
推荐指数
1
解决办法
1881
查看次数

自定义包名称cxf-codegen-plugin

想象一下这个场景.

我有一个带有命名空间a/b/c的wsdl文件,它导入另一个命名空间为m/n/o的wsdl.不幸的是,它们都在其中定义了相同的ComplexTypes XYZ.现在,当我使用cxf-codegen-plugin生成Java代码并使用自定义包名"com.qsrs.uvw"时,在生成的最终代码中只保留一个类.有人可以帮帮我吗?

java wsdl cxf wsdl2java maven

16
推荐指数
1
解决办法
2万
查看次数

传递参数作为对象[]

我希望将此API与ac#应用程序一起使用:http: //www.affjet.com/2012/11/26/4-4-affjet-api/#more-3099

在将wsdl添加到我的projcet后,我写了这个简单的代码:(getTransactions获取一个对象[] @params并返回一个字符串)

Ws_ApiService service = new Ws_ApiService();
string apiKey = "*************";
var response = service.getTransactions(new object[] { apiKey });
Run Code Online (Sandbox Code Playgroud)

我尝试了几种方法,但无法得到正确的答案,我试过:

var response = service.getTransactions(new object[] { "apiKey:****"});
Run Code Online (Sandbox Code Playgroud)

var response = service.getTransactions(new object[] { "apiKey","******"});
Run Code Online (Sandbox Code Playgroud)

这是从他们的文档中做同样的PHP代码:

<?php

$nameSpace = "https://secure.affjet.com/ws/api";

//Creating AffJet client for SOAP
$client = new SoapClient($nameSpace."?wsdl");

$pageNumber = 0;
//Setting up parameters
$params = array();
$params["apiKey"] = "MY_API_KEY";
//Value for parameters (optional)
//$params["networkId"] = array(1,2);
//$params["pageNumber"] = 0;
//$params["pageSize"] = 10;
//Making Request …
Run Code Online (Sandbox Code Playgroud)

c# soap wsdl web-services affiliate

16
推荐指数
1
解决办法
3177
查看次数

如何在WSDL中将SOAP标头标记为可选?

我有一个带可选标头的wsdl:

<s:element name="AuthIdentifier" type="tns:AuthIdentifier"/>
<s:complexType name="AuthIdentifier">
  <s:sequence>
    <s:element minOccurs="0" maxOccurs="1" name="identifier" type="s:string"/>
  </s:sequence>
  <s:anyAttribute/>
</s:complexType>
Run Code Online (Sandbox Code Playgroud)

客户端使用集成软件 (tibco)连接到我的服务并声称标头是必需的,因此他必须使用空值发送它:

<Header.AuthIdentifier>
   <ns0:AuthIdentifier xmlns:ns0 = "http://www.tal.com/schemas"/>
</Header.AuthIdentifier>
Run Code Online (Sandbox Code Playgroud)

如何使其成为可选项?这样他就不必发送整个标题了?有没有这样的minOccurs东西?或者它现在已经是可选的吗?

tibco soap wsdl web-services

16
推荐指数
1
解决办法
857
查看次数

标签 统计

wsdl ×10

soap ×6

web-services ×6

java ×3

perl ×2

affiliate ×1

axis2c ×1

c# ×1

caching ×1

cxf ×1

jax-ws ×1

maven ×1

php ×1

soa ×1

soapheader ×1

tibco ×1

wcf ×1

wsdl2java ×1