簡體   English   中英

PHP SoapClient調用帶有身份驗證的soap方法

[英]PHP SoapClient to call a soap method with authentication

我正在嘗試使用php(5.3.5)使用wsdl訪問Web服務(JAX-WS)。 以下是我正在使用的代碼:

class insoapauth 
{ 
    public $Username; 
    public $Password; 

    public function __construct($username, $pass) 
    { 
        $this->Username = $username; 
        $this->Password = $pass; 
    } 
} 
$client = new SoapClient("http://192.168.124.11:8080/cx-subscriberdata/CXSubscriberAdmin?wsdl", array( "login" => "SOAPDW", "password" => "DW@2012"));

   // Create the header 
  $auth         = new insoapauth("SOAPDW", "DW@2012"); 
  $header       = new SoapHeader("http://192.168.124.11:8080/cx-subscriberdata/CXSubscriberAdmin", "APICredentials", $auth, false); 
try {

  $result = $client->__soapCall("getDataWS", array( 
    "CrmSearchInformation" => array( 
        "searchKeyValue"        => "93700801021"        
    ) 
)); 

  echo("<br/>Returning value of __soapCall() call: ".$result);

}catch(SoapFault $exception)
{
    print_r("Got issue:<br/>") ;
  var_dump($exception);
}

另外,我嘗試了另一種使用SoapHeader的方法,並在方法調用時提供了它。 但是我總是收到SoapFault異常:

無法連接到主機

更多詳細信息例外:

SoapFault例外:[HTTP]無法連接到C:\\ wamp \\ www \\ SOAPTest \\ client \\ insoaptest.php:103中的主機:堆棧跟蹤:#0 [內部函數]:SoapClient-> _ doRequest(' _soapCall('getDataWS' ,數組)#2 {main}

但是,使用soapUI,我可以連接到soapsever,並可以使用相同的憑據調用soapmethod。 以下是手冊隨附的一些訪問WS的示例代碼-我想它是Java語言:

INBeanService service = new INBeanService();
CXINWS wsPort = service.getCXINWSPort();
String username = "crmtestuser";
String password = "crmpassword";
BindingProvider bp = (BindingProvider) wsPort;
bp.getRequestContext().put(BindingProvider.USERNAME_PROPERTY, username);
bp.getRequestContext().put(BindingProvider.PASSWORD_PROPERTY, password);
try {
CrmSearchInformation crmSearchInfo = new CrmSearchInformation();
crmSearchInfo.setSearchKeyValue(msisdn);
CrmSearchResult result = wsPort.getDataWS(crmSearchInfo);
//handle result
System.out.println("Result state: " + result.getSearchResultState());
} catch (NxWsException e) {
// handle exceptions
}

有人可以告訴我如何通過身份驗證從php訪問wsdl Web服務嗎?

由於存在緩存的WSDL,我之前遇到過此錯誤...嘗試禁用緩存:

ini_set('soap.wsdl_cache_enabled',0);
ini_set('soap.wsdl_cache_ttl',0);

這些設置的文檔在這里

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM