مشکل در نوع پارامتر ارسالی در soap

mosi20

Active Member
سلام
من با api مگفا دارم کار میکنم
برای ارسال sms هرچی از soap استفاده میکنم هر دفعه به من یک سری ارور بر میگردونه.
به این شکل ارسال کردم
PHP:
$message =’salam’;
اولین ارور = >

soapenv:Server.userException org.xml.sax.SAXException: Deserializing parameter 'messageBodies': could not find deserializer for type {http://magfa.com/soap/SOAPSmsQueue}ArrayOf_xsd_string


به این شکل ارسال کردم
PHP:
$message =array(‘salam’);
دومین ارور = >
soapenv:Server.userException org.xml.sax.SAXException: No deserializer defined for array type {http://www.w3.org/2001/XMLSchema}string

تمامی اشکال من توی انتخاب تایپ صحیح برای چندتا پارامتر هست.
توی راهنما نوشته که نوع پارامتر باید Array of string باشد
توی wsdl سایتشون هم زده <wsdl:part name="messageBodies" type="impl:ArrayOf_xsd_string"/>

کسی میدونه چجوری من این پارامتر را بفرستم؟
 

www.nero.ir

Member
وقتی از soap اسفاده میکنی باید نوع ورودی و خروجی رو مشخص کنی تابع رو رجیستر کنی به همین راحتی نبستش در باره nusoap server یک سرج کنی متوجه میشی میشه زیاد هم سخت نیست
 

mosi20

Active Member
خیلی ممنون
اما فکر نمیکنی من توی 10 روز حتما 2000 بار توی گوگل سرچ زدم؟
نمونه بزار
من php 5 استفاده میکنم
 

www.nero.ir

Member
PHP:
// load SOAP library
require_once("libs/nusoap.php");
require_once("libs/functions.php");
// load library that holds implementations of functions we're making available to the web service
// set namespace
$ns="http://localhost/";
// create SOAP server object
$server = new soap_server();
// setup WSDL file, a WSDL file can contain multiple services
$server->configureWSDL('Calculator',$ns);
$server->wsdl->schemaTargetNamespace=$ns;
// register a web service method
$server->register('ws_add',
 array('int1' => 'xsd:integer','int2' => 'xsd:integer'),  // input parameters
 array('total' => 'xsd:integer'),        // output parameter
 $ns,               // namespace
    "$ns#ws_add",                        // soapaction
    'rpc',                                    // style
    'encoded',                                // use
    'adds two integer values and returns the result'            // documentation
 );
function ws_add($int1, $int2){
return new soapval('return','xsd:integer',add($int1, $int2));
}
// service the methods 
$server->service($HTTP_RAW_POST_DATA);
?>


من کی بورد فارسی ندارم سخت هستش واسم تایپ کردن ایدی یاهو میزارم بهم پی ام بده در خدمتت هستم​
[email protected]
PHP:
$server->configureWSDL('Calculator',$ns);
نم اسپیس رو تعریف میکنی​

PHP:
$server->register('ws_add',
 array('int1' => 'xsd:integer','int2' => 'xsd:integer'),  // input parameters
 array('total' => 'xsd:integer'),        // output parameter
 $ns,               // namespace
    "$ns#ws_add",                        // soapaction
    'rpc',                                    // style
    'encoded',                                // use
    'adds two integer values and returns the result'            // documentation
 );
تابع رو که می خوای تحت وب سرویس ارئه بدی ریجستر می کنی ورودی و خورجی رو مشخص می کنی​
 

mosi20

Active Member
حاجی من سواپ بلدم
این که نوشتی برای سرور هستش
من کلاینت هستم!!!
 

www.nero.ir

Member
اگه بلدی که مشگلی نیست من برای یک کلاینت با سرورش می زارم

کلاینت
PHP:
<?php
// include the SOAP classes
require_once('nusoap.php');
// define parameter array (ISBN number)
$param = array('isbn'=>'0385503954');
// define path to server application
$serverpath ='http://services.xmethods.net:80/soap/servlet/rpcrouter';
//define method namespace
$namespace="urn:xmethods-BNPriceCheck";
// create client object
$client = new soapclient($serverpath);
// make the call
$price = $client->call('getPrice',$param,$namespace);
// if a fault occurred, output error info
if (isset($fault)) {
        print "Error: ". $fault;
        }
else if ($price == -1) {
        print "The book is not in the database.";
} else {
        // otherwise output the result
        print "The price of book number ". $param[isbn] ." is $". $price;
        }
// kill object
unset($client);
?>
سرور همین کلاینت​
PHP:
<?php
// function to get price from database
function lookup($ISBN) {
    $query = "select price from books where isbn = ". $ISBN;
    if (mysql_connect("localhost", "username", "passwd"))
    else { $error = "Database connection error";
        return $error; }
     if (mysql_select_db("books"))
    else { $error = "Database not found";
        return $error; }
      if ($result = mysql_query($query))
    else { $error = "mysql_error()";
        return $error; }
    $price = mysql_result($result, 0, 0);
    return $price;
    }
// include the SOAP classes
require_once('nusoap.php');
// create the server object
$server = new soap_server;
// register the lookup service
$server->register('lookup');
// if the lookup fails, return an error
if $price == 0 {
    $error = "Price lookup error";
    }
if (isset($error)) {
    $fault = 
$server->fault('soap:Server','http://mydomain.com/booklookupscript.php',$err
or);
    }
// send the result as a SOAP response over HTTP
$server->service($HTTP_RAW_POST_DATA);
?>
 

جدیدترین ارسال ها

بالا