Soap客户端PHP连接错误svc

时间:2018-01-24 10:28:23

标签: php api soap client svc

我想用PHP SOAP发送和接收数据。但是没有.wsdl链接 我试图用.svc链接发送它,但它给出'auth'错误。

如何用PHP soap编写?

 <system.serviceModel>
<bindings>
  <customBinding >
   <!--CDM Servis için Binding Ayarı -->
    <binding name="CustomClientEArsivServicesBinding">
      <textMessageEncoding maxReadPoolSize="2147483647" maxWritePoolSize="2147483647"
        messageVersion="Soap11" />
      <httpsTransport maxBufferPoolSize="2147483647" maxReceivedMessageSize="2147483647"
        maxBufferSize="2147483647" />        
   </binding>
  </customBinding>
</bindings>
<client>
 <!--CDM Servis için Endpoint Ayarı -->
  <endpoint address="https://xxxxxxxxx/ ClientEArsivServicesPort.svc" binding="customBinding"
    bindingConfiguration="Custom ClientEArsivServicesPortBinding" contract="FITOEServices. ClientEArsivServicesPort"
    name="ClientEArsivServicesPort" />
</client>

HTTPBASİECUTH

Code I Write 但我收到'未经授权'的错误

<?php

header('Content-type: text/html; charset=utf-8');
 ini_set("soap.wsdl_cache_enabled", "0");


class JaxWsSoapClient extends SoapClient
{
    public function __call($method, $arguments){
        $response = parent::__call($method, $arguments);
        return $response->return;
    }
}


 try { 
  
  $client       = new JaxWsSoapClient("http://xxxxxx.com/EArchiveInvoiceService.wsdl",
                                       array("trace" => 1,
                                             "location" =>"https:/xxxxxx.fitbulut.com/ClientEArsivServicesPort.svc",
                                             "uri" =>"http://xxxxxx/namespace/",
                                             "username" => "xxxxxxx",
                                             "password" => "G#xxxxx"          
                                     ));
 $result = $client->getInvoiceDocument('xxxx');

  echo"<br/>Dumping request headers:<br/>".$client->__getLastRequestHeaders();
  echo("<br/>Dumping request:<br/>".$client->__getLastRequest());
  echo("<br/>Dumping response headers:<br/>".$client->__getLastResponseHeaders());
  echo("<br/>Dumping response:<br/>".$client->__getLastResponse());
  echo("<br/>Returning value of __soapCall() call: ");
  var_dump($result->resultDataMap);

}catch(SoapFault $exception)
{
  print_r("Got issue:<br/>") ;
  echo '<pre>';
  print_r($exception);
  echo '</pre>';
}
?>

1 个答案:

答案 0 :(得分:0)

BASİCAUTH.net CODE

ClientEArsivServicesPortClient wsClient = new ClientEArsivServicesPortClient ();
using (new System.ServiceModel.OperationContextScope((System.ServiceModel.IClientChannel)wsClient.InnerChannel))
{
	string authorization = "UserName:Password";
	byte[] byteArray = System.Text.Encoding.ASCII.GetBytes(authorization);
	string base64authorization = Convert.ToBase64String(byteArray); 
	System.ServiceModel.Web.WebOperationContext.Current.OutgoingRequest.Headers.Add(HttpRequestHeader.Authorization, String.Format("Basic {0}", base64authorization));                
wsClient.getUserList (new getUserListRequest()); //call the service method
}