2017-07-19 1 views
1

ProblèmeDemande timeout lors de la connexion à SAS webservice de PHP

Je suis en train de connecter un script PHP à un service Web SAS (SAS processus stocké d'application Web). Le script donne toujours le délai d'attente, bien que j'ai essayé de changer le délai d'attente de socket et les valeurs de délai d'attente SOAPClient. Le service Web SAS répond rapidement et correctement lorsqu'il est exécuté à partir du client SoapUI.

Voici mon code:

<?php 

$url = "http://laptop-ht08lb7f/SASBIWS/services/Test13?WSDL"; 

$client = new SoapClient($url, array("trace" => 1, "debug" => 1, "exceptions" => 0)); 

$params = array(
    "Credit_Amount" => 1.0, 
    "Dur_Credit" => 1.0, 
    "Foreign_Worker" => 1.0, 
    "Instalment" => 1.0, 
    "MostVal_Asset" => 1.0, 
    "Num_Years" => 1.0, 
    "PayStat_Previous" => 1.0, 
    "Savings_Stocks" => 1.0, 
    "Telephone" => 1.0, 
    "Acct_Balance" => 1.0 
); 

$response = $client->storedProcessforCustomerScoring(array($params)); 
print_r($response); 

?> 

Debug

Depuis les temps de demande, je suis incapable de le voir le résultat de

$client->__getLastRequestHeaders() 
$client->__getLastRequest() 

En tant que tel, je ne suis pas savoir si la demande est créée correctement.

Expériences

j'ai essayé ce qui suit pour obtenir les fonctions et les types de la WebService:

<?php 
    var_dump($client->__getFunctions()); 
    var_dump($client->__getTypes()); 
?> 

et a obtenu ce résultat:

Pour les fonctions:

array(1) { 
    [0]=> 
    string(116) "storedProcessforCustomerScoringResponse storedProcessforCustomerScoring(storedProcessforCustomerScoring $parameters)" 
} 

Pour les types:

array(6) { 
    [0]=> 
    string(97) "struct storedProcessforCustomerScoring { 
storedProcessforCustomerScoringParameters parameters; 
}" 
    [1]=> 
    string(272) "struct storedProcessforCustomerScoringParameters { 
double Credit_Amount; 
double Dur_Credit; 
double Foreign_Worker; 
double Instalment; 
double MostVal_Asset; 
double Num_Years; 
double PayStat_Previous; 
double Savings_Stocks; 
double Telephone; 
double Acct_Balance; 
}" 
    [2]=> 
    string(128) "struct storedProcessforCustomerScoringResponse { 
storedProcessforCustomerScoringResult storedProcessforCustomerScoringResult; 
}" 
    [3]=> 
    string(66) "struct storedProcessforCustomerScoringResult { 
Streams Streams; 
}" 
    [4]=> 
    string(36) "struct Streams { 
_WEBOUT _WEBOUT; 
}" 
    [5]=> 
    string(60) "struct _WEBOUT { 
base64Binary Value; 
string contentType; 
}" 
} 

SoapUI

Voici la requête XML quand il est fait par SoapUI:

<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:tes="http://tempuri.org/Test13"> 
    <soapenv:Header/> 
    <soapenv:Body> 
     <tes:storedProcessforCustomerScoring> 
     <tes:parameters> 
      <tes:Credit_Amount>250</tes:Credit_Amount> 
      <tes:Dur_Credit>1</tes:Dur_Credit> 
      <tes:Foreign_Worker>1</tes:Foreign_Worker> 
      <tes:Instalment>1</tes:Instalment> 
      <tes:MostVal_Asset>1</tes:MostVal_Asset> 
      <tes:Num_Years>1</tes:Num_Years> 
      <tes:PayStat_Previous>1</tes:PayStat_Previous> 
      <tes:Savings_Stocks>1</tes:Savings_Stocks> 
      <tes:Telephone>1</tes:Telephone> 
      <tes:Acct_Balance>1</tes:Acct_Balance> 
     </tes:parameters> 
     </tes:storedProcessforCustomerScoring> 
    </soapenv:Body> 
</soapenv:Envelope> 

que quelqu'un peut me donner quelques conseils pour débugger ou pour le résoudre?

Merci d'avance.

+0

Les requêtes sont normalement servies via un URL avec le chemin '/ SASStoredProcess' et un STP identifié par un paramètre' _PROGRAM'. Puis-je demander quel genre de service vous demandez? Quelle version de SAS? –

+0

Il ne s'agit pas de l'application Web SASStoredProcess. c'est l'application BI Web Services. Vous devriez clarifier cela dans votre question. – DomPazz

+0

Le type de service est XMLA et la version SAS est 9.4 –

Répondre

0

Vérifiez votre URL

Je pense que ce

$url = "http://laptop-ht08lb7f/SASBIWS/services/Test13?WSDL"; 

devrait-elle être ce

$url = "http://laptop-ht08lb7f/SASBIWS/services/Test13"; 

Quelle URL envoie SoapUI?

Aussi, essayez de capturer le trafic avec quelque chose comme Fiddler pour comparer les deux appels.

+0

SOAPUI envoie "http: // laptop-ht08lb7f/SASBIWS/services/Test13" mais lorsque l'utilisation dans le code ne fonctionne pas –