标签: soap-client

如何获得所有亚马逊类产品

如何从现有类别中获取所有亚马逊产品?

使用API​​,我可以浏览10页并获得每页10个产品.

该类别有502348件产品,我想把它们全部搞定.

这是我的代码:

Amazon Product Advertising API <?php ?>
$params = array(
        'Operation' => 'ItemSearch',
        'SearchIndex'=>'Electronics',
        //'BrowseNode'=>'281052',
        'ResponseGroup'=>'small',
        //'MerchantId' => 'All',
        //'Condition'=>'New',
        'ItemPage'=>'1471',
Run Code Online (Sandbox Code Playgroud)

php amazon soap-client amazon-web-services amazon-product-api

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

如何将HTTP标头添加到SOAP客户端

如果有可能将HTTP标头添加到soap客户端Web服务调用,有人可以回答我.浏览互联网后,我发现的唯一的薄是如何添加SOAP标头.

代码如下所示:

var client =new MyServiceSoapClient();
//client.AddHttpHeader("myCustomHeader","myValue");//There's no such method, it's just for clearness
var res = await client.MyMethod();
Run Code Online (Sandbox Code Playgroud)

更新:

The request should look like this
POST https://service.com/Service.asmx HTTP/1.1
Content-Type: text/xml; charset=utf-8
SOAPAction: "http://www.host.com/schemas/Authentication.xsd/Action"
Content-Length: 351
MyHeader: "myValue"
Expect: 100-continue
Accept-Encoding: gzip, deflate
Connection: Keep-Alive

<s:Envelope xmlns:s="http://schemas.xmlsoap.org/soap/envelope/">
  <s:Header/>
  <s:Body>
    <myBody>BodyGoesHere</myBody>
  </s:Body>
</s:Envelope>
Run Code Online (Sandbox Code Playgroud)

信封中的标题属性应为空

c# soap-client windows-8

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

使用PHP SoapClient类映射选项,其中WSDL包含具有相同名称的元素和complexType

我遇到了一些不同的WSDL文件,其中包含一个元素和一个具有相同名称的complexType.例如,http://soap.search.msn.com/webservices.asmx?wsdl有两个名为"SearchResponse"的实体:

在这种情况下,我无法弄清楚如何使用SoapClient()"classmaps"选项将这些实体正确映射到PHP类.

PHP手册说:

classmap选项可用于将某些WSDL类型映射到PHP类.此选项必须是一个数组,其中WSDL类型作为键,PHP类的名称作为值.

不幸的是,由于有两个具有相同密钥的WSDL类型('SearchResponse'),我无法弄清楚如何区分两个SearchResponse实体并将它们分配给相应的PHP类.

例如,以下是示例WSDL的相关代码段:

<xsd:complexType name="SearchResponse">
    <xsd:sequence>
        <xsd:element minOccurs="1" maxOccurs="1" name="Responses" type="tns:ArrayOfSourceResponseResponses"/>
    </xsd:sequence>
</xsd:complexType>

<xsd:element name="SearchResponse">
    <xsd:complexType>
        <xsd:sequence>
            <xsd:element minOccurs="1" maxOccurs="1" name="Response" type="tns:SearchResponse"/>
        </xsd:sequence>
    </xsd:complexType>
</xsd:element>
Run Code Online (Sandbox Code Playgroud)

这里的PHP显然不起作用,因为类映射键是相同的:

<?php $server = new SoapClient("http://soap.search.msn.com/webservices.asmx?wsdl", array('classmap' => array('SearchResponse' => 'MySearchResponseElement', 'SearchResponse' => 'MySearchResponseComplexType'))); ?>
Run Code Online (Sandbox Code Playgroud)

在搜索解决方案时,我发现Java Web Services通过允许您为"Element"或"ComplexType"实体指定自定义后缀来处理此问题.

http://download.oracle.com/docs/cd/E17802_01/webservices/webservices/docs/1.5/tutorial/doc/JAXBUsing4.html#wp149350

所以,现在我觉得没有办法用PHP的SoapClient做到这一点,但我很好奇是否有人可以提供任何建议.FWIW,我无法编辑远程WDSL.

有任何想法吗???

php soap wsdl soap-client

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

soap:Envelope SOAP-ENV:Envelope PHP

我正在尝试使用PHP的内置soap功能登录API.我得到了这样的结果.

[LoginResult]=> false,
[ErrorMsg] => Login failed with the reason : The security object is invalid
Run Code Online (Sandbox Code Playgroud)

这是API提供商所要求的.

<?xml version="1.0" encoding="utf-8"?>
<soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
<soap:Body>
    <Login xmlns="http://tempuri.org/Example/Service1">
          <objSecurity>
              <WebProviderLoginId>test</WebProviderLoginId>
              <WebProviderPassword>test</WebProviderPassword>
              <IsAgent>false</IsAgent>
          </objSecurity>
          <OutPut />
          <ErrorMsg />
    </Login>
</soap:Body>
</soap:Envelope>
Run Code Online (Sandbox Code Playgroud)

&,这是我能够使用函数生成的.

<?xml version="1.0" encoding="UTF-8"?>
<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" xmlns:ns1="http://tempuri.org/Example/Service1">
<SOAP-ENV:Body>
    <ns1:Login>
        <objSecurity>
             <WebProviderLoginId>test</WebProviderLoginId>
             <WebProviderPassword>test</WebProviderPassword>
             <IsAgent>false</IsAgent>
        </objSecurity>
        <OutPut/>
        <ErrorMsg/>
    </ns1:Login>
</SOAP-ENV:Body>
</SOAP-ENV:Envelope>
Run Code Online (Sandbox Code Playgroud)

这是我用来发送请求的代码.

<?php
class objSecurity {
function objSecurity($s, $i, $f)   {
    $this->WebProviderLoginId = $s;
    $this->WebProviderPassword = $i;
    $this->IsAgent = $f;
}
}

class …
Run Code Online (Sandbox Code Playgroud)

php xml soap soap-client

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

如何忽略自签名证书错误node.js soap.js

我使用soap.js在node.js中创建了一个soap客户端.Soap通过https进行通信.当我尝试连接时,我不断收到此错误

{[错误:自签名证书]代码:'DEPTH_ZERO_SELF_SIGNED_CERT'}

以下是我的代码

var url = '../public/test.wsdl';

var client = soap.createClient(url,sslOptions, function(err, client) {
    client.setSecurity(new soap.WSSecurity('testuser', 'testpassword'));
      client.CheckStatus(args, function(err, result) {
          console.log(err);
        //  console.log(result);
      });

  });
Run Code Online (Sandbox Code Playgroud)

我也尝试了以下ssl设置,但没有成功

sslOptions = {
  key: fs.readFileSync( '../certs/test-key.pem'),
  cert: fs.readFileSync( '../certs/test-cert.pem'),
  rejectUnauthorized : false,
  secureOptions : constants.SSL_OP_NO_TLSv1_2,
  strictSSL : false
};
Run Code Online (Sandbox Code Playgroud)

任何帮助,将不胜感激 !!

javascript ssl soap-client node.js

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

Reactive Spring WebClient - 进行SOAP调用

我期待从Spring反应webclient进行SOAP调用.我找不到任何文件.想知道这个方法会是什么.现在我在想

  1. 在单独的线程池上使用JAXB构造SOAP消息
  2. 通过webclient将其转换为字符串来进行调用
  3. 在返回单独的tp的路上,使用jaxb转换回java.

有什么缺点和其他方法?

soap-client spring-boot reactive spring-webflux

11
推荐指数
2
解决办法
1938
查看次数

PHP中的SoapClient错误回退

在PHP中,如果您尝试实例化一个新的SoapClient,并且无法访问WSDL(服务器关闭或其他),则会抛出PHP致命错误:

致命错误:SOAP-ERROR:解析WSDL:无法从" http://example.com/servlet/app/SomeService?wsdl "加载:无法加载外部实体" http://example.com/servlet/app/SomeService?wsdl "

据我所知,PHP中的致命错误无法恢复.

有什么方法可以退缩吗?这种致命错误能否以某种方式避免?


编辑:我应该说我在PHP 5.2上运行,如果它有任何区别.

php soap soap-client php-5.2

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

如何定义SoapVar命名空间?

我需要在我的SOAP请求中使用此节点(使用1.1):

<CredentialsHeader xmlns="http://www.url.com/Services/P24ListingService11"
    <EMail>ricky@email.net</EMail>
    <Password>password</Password>
</CredentialsHeader>
Run Code Online (Sandbox Code Playgroud)

所以我有以下PHP:

$client = new SoapClient("https://exdev.www.example.com/Services/example.asmx?WSDL", 
    array(
        "trace"      => 1,
        "exceptions" => 0,
        "cache_wsdl" => 0,
        'soap_version' => SOAP_1_1
        )
);

$CredentialObject = new SoapVar(array('EMail' => 'ricky@email.net', 'Password' => 'password'), SOAP_ENC_OBJECT);
Run Code Online (Sandbox Code Playgroud)

哪个产生:

<?xml version="1.0" encoding="UTF-8"?>
<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" xmlns:ns1="http://www.example.com/Services/Example">
    <SOAP-ENV:Header>
        <ns1:CredentialsHeader>
            <EMail>ricky@email.net</EMail>
            <Password>password</Password>
        </ns1:CredentialsHeader>
    </SOAP-ENV:Header>
    <SOAP-ENV:Body>
        <ns1:EchoAuthenticated/>
    </SOAP-ENV:Body>
</SOAP-ENV:Envelope>
Run Code Online (Sandbox Code Playgroud)

我需要做的就是阻止它使用ns1xmlns在节点中实际定义如下:

<CredentialsHeader xmlns="http://www.example.com/Services/Example">
        <EMail>ricky@email.net</EMail>
        <Password>password</Password>
    </CredentialsHeader>
Run Code Online (Sandbox Code Playgroud)

我已经在Firefox海报中对此进行了测试,并且知道更改可以解决问题.

php soap namespaces soap-client

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

如何在PHP中发出SOAP请求

我试图在PHP中发出SOAP请求.我有我的服务URL,当我在SOAP UI中检查它时,我可以看到以下内容

<application xmlns="http://somenamespace.com">
   <doc xml:lang="en" title="https://someurl.com"/>
   <resources base="https://someurl.com">
      <resource path="sdk/user/session/logon/" id="Logon">
         <doc xml:lang="en" title="Logon"/>
         <param name="ApiKey" type="xs:string" required="false" default="" style="query" xmlns:xs="http://www.w3.org/2001/XMLSchema"/>
         <param name="ApiSecret" type="xs:string" required="false" default="" style="query" xmlns:xs="http://www.w3.org/2001/XMLSchema"/>
         <method name="POST" id="Logon">
            <doc xml:lang="en" title="Logon"/>
            <request>
               <param name="method" type="xs:string" required="true" default="" style="query" xmlns:xs="http://www.w3.org/2001/XMLSchema"/>
               <representation mediaType="application/json"/>
               <representation mediaType="application/xml"/>
               <representation mediaType="text/xml"/>
               <representation mediaType="application/x-www-form-urlencoded"/>
            </request>
            <response status="404 500">
               <representation mediaType="text/html; charset=utf-8" element="html"/>
            </response>
            <response status="">
               <representation mediaType="application/json"/>
               <representation mediaType="application/xml"/>
               <representation mediaType="text/xml"/>
               <representation mediaType="application/x-www-form-urlencoded"/>
            </response>
            <response status="500">
               <representation mediaType="application/vnd.marg.bcsocial.result-v1.9+json; charset=utf-8" element="log:Fault" xmlns:log="https://someurl.com/sdk/user/session/logon"/>
               <representation mediaType="application/vnd.marg.bcsocial.result-v1.9+xml; …
Run Code Online (Sandbox Code Playgroud)

php soap soap-client

10
推荐指数
3
解决办法
657
查看次数

函数执行期间的SOAP客户端超时

我需要使用SOAP从数据库中检索一些数据.我不是一个经验丰富的PHP程序员,这就是我需要一些帮助的原因.提供webservice(WSDL)的公司给了我登录信息和svc和wsdl文件的链接.他们还给了我一个如何连接C#的例子:

var proxy = new ChannelFactory<ServiceReferenceWCF.IWebService2>("custom");
            proxy.Credentials.UserName.UserName = login;
            proxy.Credentials.UserName.Password = pass;
            var result = proxy.CreateChannel();
            var logged_in = result.loggedIn();
Run Code Online (Sandbox Code Playgroud)

这是我的PHP代码:

$wsdl_proto = 'https';
$wsdl_host = 'their_wsdl_host';
$wsdl_host_path = 'their_wsdl_path';
$namespace_proto = 'https';
$namespace_host = 'their_namespace_host';
$namespace_path = 'their_namespace_path';
$location = $namespace_proto.'://'.$namespace_host.$namespace_path;
$wsdl_url = $wsdl_proto.'://'.$wsdl_host.$wsdl_host_path;
$connection = new SoapClient($wsdl_url, array('location' => $location, 'soap_version' => SOAP_1_1, 'connection_timeout'=> 600,
    'proxy_login' => "my_login", 'proxy_password' => "my_password"));
$functions = $connection->__getFunctions();
var_dump($functions);
$logged_in = $connection->loggedIn();
Run Code Online (Sandbox Code Playgroud)

它在loggedIn()函数调用期间挂起.此函数列在$ functions变量中,因此它是有效的.我尝试了服务提供的其他一些功能 - 结果总是一样的:脚本只是冻结了.我的意思是服务没有响应,PHP等待loggedIn()功能完成.超过超时后,我收到一个错误:Error Fetching …

php soap wsdl soap-client

10
推荐指数
1
解决办法
5009
查看次数