Page 1 of 1

Error consuming .net web service.

Posted: Thu Aug 04, 2005 3:23 pm
by luisevalencia
Hello I got a problem consuming a .net webservice.
From asp.net the developer consumes it very easily with 2 lines of code.
It works form him

Code: Select all

agamenon.WSGateways ws = new ConsumeWSPlataforma.agamenon.WSGateways();
Response.Write(ws.AloInsertGwy('A', 1000000, "600", "600", "", "", "", 90,'1', '1', '1', "", "", "", 0, "2", '3', "", "", "SIP", '1'));
From PHP I try to consume in this way

Code: Select all

<?php
error_reporting(1);
// Inclusion de la libreria nusoap (la que contendra toda la conexión con el servidor
require_once('lib/nusoap.php');
 
$oSoapClient = new soapclient('http://agamenon.avansoft.com:81/WSAdmGateways/WSGateways.asmx?wsdl', true);
 
if ($sError = $oSoapClient->getError()) {
        echo "No se pudo realizar la operación [".$sError."]";
        die();
}
 
//$aParametros = array ("gateway" => "3803331238", "balance" => "123"   );
$aParametros = array (  "status" => 'A',
      "balance" => 1000000,   
      "rate_normal" => "600",   
      "rate_premium" => "600",
         "dial_plan" => "",  
      "uaccount" => "", 
      "aaccount" => "",
      "max_time" => 90,
      "spk_balance" => '1',
         "spk_time" => '1',
      "spk_remaining" => '1',
      "fwd_number" => "",  
      "exp_date" => "",
      "language" => "",
          "recharge_limit" => 0, 
      "in_rcode" => "2",
      "gw_type" => '3',
      "ip_address" => "",
      "prefix" => "",
      "protocol" => "SIP",
      "ivr_esb" => '1',
      "gateway" =>"",
      "password" => ""  );
      
      
 
$aRespuesta = $oSoapClient->call("AloInsertGwy", array('parameters' => $aParametros) );
//$aRespuesta = $oSoapClient->call("AloGetGwyBalance", array('parameters' => $aParametros) );
// Existe alguna falla en el servicio?
if ($oSoapClient->fault) { // Si
        echo 'No se pudo completar la operación '.$oSoapClient->getError();
        die();
} else { // No
        $sError = $oSoapClient->getError();
        // Hay algun error ?
        if ($sError) { // Si
                echo 'Error!:'.$sError;
        }
}
?>
<html>
   <body>
                Respuesta del WebService <?=print_r($aRespuesta);?>
                <br>
                <br>
                El error es: <?=$aRespuesta[getGwyBalanceObjResult][error];?>
 
 
 
   </body>
</html>
<?php
echo '<h2>Request</h2><pre>' . htmlspecialchars($oSoapClient->request, ENT_QUOTES) . '</pre>';
echo '<h2>Response</h2><pre>' . htmlspecialchars($oSoapClient->response, ENT_QUOTES) . '</pre>';
echo '<h2>Debug</h2><pre>' . htmlspecialchars($oSoapClient->debug_str, ENT_QUOTES) . '</pre>';
?>
But it says that I am not sending the rate_normal parameter. Why??

This is the .net code of the web service

Code: Select all

[WebMethod]
		public string AloInsertGwy(char status, int balance, string rate_normal, string rate_premium,  string dial_plan,  string uaccount, string aaccount, int max_time,char spk_balance, char spk_time, char spk_remaining,  string fwd_number, string exp_date, string language, int recharge_limit, string in_rcode,  char gw_type, string ip_address, string prefix, string protocol,  char ivr_esb)
		{
			SqlConnection conexion;			
			conexion = new SqlConnection(connString);			
			try
			{
				conexion.Open();
				SqlCommand sqlcmd = new SqlCommand("AloInsertGwy",  conexion);
				sqlcmd.CommandType = CommandType.StoredProcedure;

				sqlcmd.Parameters.Add("@Status", SqlDbType.Char,1);
				sqlcmd.Parameters["@Status"].Value = status;
				sqlcmd.Parameters["@Status"].Direction = ParameterDirection.Input;

				sqlcmd.Parameters.Add("@Balance", SqlDbType.Int);
				sqlcmd.Parameters["@Balance"].Value = balance;
				sqlcmd.Parameters["@Balance"].Direction = ParameterDirection.Input;

				sqlcmd.Parameters.Add("@Rate_Normal", SqlDbType.VarChar, 10);
				sqlcmd.Parameters["@Rate_Normal"].Value =  rate_normal;
				sqlcmd.Parameters["@Rate_Normal"].Direction = ParameterDirection.Input;

				sqlcmd.Parameters.Add("@Rate_Premium", SqlDbType.VarChar, 10);
				sqlcmd.Parameters["@Rate_Premium"].Value =  rate_premium;
				sqlcmd.Parameters["@Rate_Premium"].Direction = ParameterDirection.Input;

				sqlcmd.Parameters.Add("@Dial_Plan", SqlDbType.VarChar, 10);
				sqlcmd.Parameters["@Dial_Plan"].Value =  rate_premium;
				sqlcmd.Parameters["@Dial_Plan"].Direction = ParameterDirection.Input;

				sqlcmd.Parameters.Add("@Uaccount", SqlDbType.VarChar, 10);
				sqlcmd.Parameters["@Uaccount"].Value =  uaccount;
				sqlcmd.Parameters["@Uaccount"].Direction = ParameterDirection.Input;

			
				sqlcmd.Parameters.Add("@Aaccount", SqlDbType.VarChar, 20);
				sqlcmd.Parameters["@Aaccount"].Value =  aaccount;
				sqlcmd.Parameters["@Aaccount"].Direction = ParameterDirection.Input;

			
				sqlcmd.Parameters.Add("@Max_time", SqlDbType.Int);
				sqlcmd.Parameters["@Max_time"].Value =  max_time;
				sqlcmd.Parameters["@Max_time"].Direction = ParameterDirection.Input;

				sqlcmd.Parameters.Add("@Spk_Balance", SqlDbType.Char, 1);
				sqlcmd.Parameters["@Spk_Balance"].Value =  spk_balance;
				sqlcmd.Parameters["@Spk_Balance"].Direction = ParameterDirection.Input;

				sqlcmd.Parameters.Add("@Spk_Time", SqlDbType.Char, 1);
				sqlcmd.Parameters["@Spk_Time"].Value =  spk_balance;
				sqlcmd.Parameters["@Spk_Time"].Direction = ParameterDirection.Input;

				sqlcmd.Parameters.Add("@Spk_Remaining", SqlDbType.Char, 1);
				sqlcmd.Parameters["@Spk_Remaining"].Value =  spk_remaining;
				sqlcmd.Parameters["@Spk_Remaining"].Direction = ParameterDirection.Input;

				sqlcmd.Parameters.Add("@Fwd_Number", SqlDbType.VarChar, 20);
				sqlcmd.Parameters["@Fwd_Number"].Value =  fwd_number;
				sqlcmd.Parameters["@Fwd_Number"].Direction = ParameterDirection.Input;

				sqlcmd.Parameters.Add("@Exp_Date", SqlDbType.VarChar, 8);
				sqlcmd.Parameters["@Exp_Date"].Value =  exp_date;
				sqlcmd.Parameters["@Exp_Date"].Direction = ParameterDirection.Input;

				sqlcmd.Parameters.Add("@Language", SqlDbType.Char, 2);
				sqlcmd.Parameters["@Language"].Value =  language;
				sqlcmd.Parameters["@Language"].Direction = ParameterDirection.Input;

				sqlcmd.Parameters.Add("@Recharge_Limit", SqlDbType.Int);
				sqlcmd.Parameters["@Recharge_Limit"].Value =  recharge_limit;
				sqlcmd.Parameters["@Recharge_Limit"].Direction = ParameterDirection.Input;

				sqlcmd.Parameters.Add("@In_Rcode", SqlDbType.VarChar, 20);
				sqlcmd.Parameters["@In_Rcode"].Value =  in_rcode;
				sqlcmd.Parameters["@In_Rcode"].Direction = ParameterDirection.Input;

				sqlcmd.Parameters.Add("@Gw_Type", SqlDbType.Char, 1);
				sqlcmd.Parameters["@Gw_Type"].Value =  gw_type;
				sqlcmd.Parameters["@Gw_Type"].Direction = ParameterDirection.Input;

				sqlcmd.Parameters.Add("@Ip_Address", SqlDbType.VarChar, 15);
				sqlcmd.Parameters["@Ip_Address"].Value =  ip_address;
				sqlcmd.Parameters["@Ip_Address"].Direction = ParameterDirection.Input;

				sqlcmd.Parameters.Add("@Prefix", SqlDbType.VarChar, 15);
				sqlcmd.Parameters["@Prefix"].Value =  prefix;
				sqlcmd.Parameters["@Prefix"].Direction = ParameterDirection.Input;

				sqlcmd.Parameters.Add("@Protocol", SqlDbType.VarChar, 4);
				sqlcmd.Parameters["@Protocol"].Value =  protocol;
				sqlcmd.Parameters["@Protocol"].Direction = ParameterDirection.Input;

				sqlcmd.Parameters.Add("@Ivr_Esb", SqlDbType.Char, 1);
				sqlcmd.Parameters["@Ivr_Esb"].Value =  ivr_esb;
				sqlcmd.Parameters["@Ivr_Esb"].Direction = ParameterDirection.Input;

				sqlcmd.Parameters.Add("@Gateway", SqlDbType.VarChar, 15);
				sqlcmd.Parameters["@Gateway"].Value =  "";
				sqlcmd.Parameters["@Gateway"].Direction = ParameterDirection.Output;

				sqlcmd.Parameters.Add("@Password", SqlDbType.VarChar, 10);
				sqlcmd.Parameters["@Password"].Value =  "";
				sqlcmd.Parameters["@Password"].Direction = ParameterDirection.Output;
				
				sqlcmd.ExecuteNonQuery();
				
				string balanceout = sqlcmd.Parameters["@Gateway"].Value.ToString();
				string resultout = sqlcmd.Parameters["@Password"].Value.ToString();
				
				return balanceout + "|" + resultout;

			}
			catch(Exception ex)
			{
				return ex.Message;
			}
			finally
			{
				conexion.Close();
			}		
		}

Thanks


feyd | fixed really poor code postings