Error consuming .net web service.
Posted: Thu Aug 04, 2005 3:23 pm
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
From PHP I try to consume in this way
But it says that I am not sending the rate_normal parameter. Why??
This is the .net code of the web service
Thanks
feyd | fixed really poor code postings
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'));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>';
?>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