I have the problem, that the NuSOAP server returns an empty array. I read and tried a lot of topics/things already but the result is always the same. I guess its only a minor thing you guys can solve within a minute.
I want to put an array of strings containing client information into another array that holds all servers:
Array
(
[Client1] => Array ([HostName] => 'TestHostName', [IP] => '1.1.1.1'),
[Client2] => Array ([HostName] => 'TestHostName', [IP] => '2.2.2.2'),
[Client3] => Array ([HostName] => 'TestHostName', [IP] => '3.3.3.3')
)
The arrays will get filled from mysql data, but for testing purposes I created a static array with data. Here is what I have got so far:
<?php
require_once ('lib/nusoap.php');
require('mysql.php');
$ServerName = 'server';
$ServiceName = 'CentralConfigService';
$ServiceURL = 'http://' . $ServerName . '/' . $ServiceName;
$Server = new soap_server();
$Server -> configureWSDL($ServiceName, $ServerName . '/' . $ServiceName);
function GetClientInfo($ClientName)
{
$Clients = array();
$ClientInfo = array(
'HostName' => 'testiname',
'IP' => 'testip',
'Type' => 'testtype',
'Config' => 'testconfig',
'Routines' => 'testroutines',
'Files' => 'testfiles',
'Access' => 'testaccess');
$Clients[$ClientName] = $ClientInfo;
return $Clients;
}
$Server -> wsdl -> addComplexType(
'ClientInfo',
'complexType',
'struct',
'sequence',
'',
array(
'HostName' => array('name' => 'HostName', 'type' => 'xsd:string'),
'IP' => array('name' => 'IP', 'type' => 'xsd:string'),
'Type' => array('name' => 'Type', 'type' => 'xsd:string'),
'Config' => array('name' => 'Config', 'type' => 'xsd:string'),
'Routines' => array('name' => 'Routines', 'type' => 'xsd:string'),
'Files' => array('name' => 'Files', 'type' => 'xsd:string'),
'Access' => array('name' => 'Access', 'type' => 'xsd:string')
)
);
$Server -> wsdl -> addComplexType(
'Clients',
'complexType',
'array',
'',
'SOAP-ENC:Array',
array(),
array(
array('ref' => 'SOAP-ENC:arrayType', 'wsdl:arrayType' => 'tns:ClientInfo')
),
'tns:Clients'
);
$Server -> register(
'GetClientInfo',
array('HostName' => 'xsd:string'),
array('return' => 'tns:Clients'),
$ServiceURL,
$ServiceURL . '#GetClientInfo',
'rpc',
'encoded',
'Get config by type');
if ( !isset( $HTTP_RAW_POST_DATA ) ) $HTTP_RAW_POST_DATA = file_get_contents( 'php://input' );
#$Server -> service($HTTP_RAW_POST_DATA);
?>
when I call the function "GetClientInfo", I always get an empty array:
Array
(
[0] => Array
(
[0] => Array
(
)
[1] => Array
(
)
[2] => Array
(
)
[3] => Array
(
)
[4] => Array
(
)
[5] => Array
(
)
[6] => Array
(
)
)
)
The client calls the function:
<?php
require_once('lib/nusoap.php');
$wsdl = "http://server/server.php?wsdl";
$client = new nusoap_client($wsdl, 'wsdl');
$result = $client -> call('GetClientInfo', array('ClientName'=>'Client1'));
print_r($result);
?>
Sorry for the long post. I hope it contains all necessary information.
Thanks a lot in advance!
Cheers,
Daniel
I found my mistake. The complexType that includes the struct has to look like that:
$Server -> wsdl -> addComplexType(
'Clients',
'complexType',
'array',
'',
'SOAP-ENC:Array',
array(),
array(
array('ref' => 'SOAP-ENC:arrayType', 'wsdl:arrayType' => 'tns:ClientInfo')
),
'tns:ClientInfo'
So 'tns:ClientInfo' instead of 'tns:Clients' in the last line.
Here is a fully functioning example:
server.php
<?php
// Includes
require_once ('lib/nusoap.php');
require('mysql.php');
require('cc_functions.php');
// General SOAP configuration
$ServerName = 'server';
$ServiceName = 'CentralConfigService';
$ServiceURL = 'http://' . $ServerName . '/' . $ServiceName;
$Server = new soap_server();
$Server -> configureWSDL($ServiceName, $ServerName . '/' . $ServiceName);
function GetClientInfo($ClientName)
{
$Clients = array();
$Clients1 = array(
'HostName' => 'testiname',
'IP' => 'testip',
'Type' => 'testtype',
'Config' => 'testconfig',
'Routines' => 'testroutines',
'Files' => 'testfiles',
'Access' => 'testaccess');
$Clients2 = array(
'HostName' => 'testiname2',
'IP' => 'testip2',
'Type' => 'testtype2',
'Config' => 'testconfig2',
'Routines' => 'testroutines2',
'Files' => 'testfiles2',
'Access' => 'testaccess2');
array_push($Clients, $Clients1);
array_push($Clients, $Clients2);
return $Clients;
}
$Server -> wsdl -> addComplexType(
'ClientInfo',
'complexType',
'struct',
'all',
'',
array(
'ID' => array('name' => 'ID', 'type' => 'xsd:integer'),
'HostName' => array('name' => 'HostName', 'type' => 'xsd:string'),
'IP' => array('name' => 'IP', 'type' => 'xsd:string'),
'Type' => array('name' => 'Type', 'type' => 'xsd:string'),
'Config' => array('name' => 'Config', 'type' => 'xsd:string'),
'Routines' => array('name' => 'Routines', 'type' => 'xsd:string'),
'Files' => array('name' => 'Files', 'type' => 'xsd:string'),
'Access' => array('name' => 'Access', 'type' => 'xsd:string')
)
);
$Server -> wsdl -> addComplexType(
'Clients',
'complexType',
'array',
'',
'SOAP-ENC:Array',
array(),
array(
array('ref' => 'SOAP-ENC:arrayType', 'wsdl:arrayType' => 'tns:ClientInfo[]')
),
'tns:ClientInfo'
);
$Server -> register(
'GetClientInfo',
array('ClientName' => 'xsd:string'),
array('return' => 'tns:Clients'),
$ServiceURL,
$ServiceURL . '#GetClientInfo',
'',
'rpc',
'Get config by type');
if (!isset($HTTP_RAW_POST_DATA)) $HTTP_RAW_POST_DATA = file_get_contents('php://input');
#$Server -> service($HTTP_RAW_POST_DATA);
?>
client.php
<?php
require_once('lib/nusoap.php');
$wsdl = "http://server/server.php?wsdl";
$client = new nusoap_client($wsdl, 'wsdl');
$result = $client -> call('GetClientInfo', array('ClientName'=>''));
print_r($result);
?>
Related
I work on a project of personal web service nusoap I start for the first time the web service last week via the web info.
Currently I am trying to write a webservice that inserts an element in the form of a table.
Here is the file server:
require_once ('lib/nusoap.php');
$server = new nusoap_server();
$server->configureWSDL("test", "urn:Test/", "http://localhost/testajout/server.php");
$server->wsdl->schemaTargetNamespace="http://localhost/testajout/server.php";
$server->soap_defencoding = 'utf-8';
//register of method
$server->wsdl->addComplexType(
'cordonne',
'complexType',
'struct',
'all',
'',
array(
'ID'=> array('name' => 'id', 'type' => 'xsd:int'),
'prenom'=> array('name' => 'prenom', 'type' => 'xsd:string'),
'lastname'=> array('name' => 'lastname', 'type' => 'xsd:string'),
'datedebut'=> array('name' => 'datedebut', 'type' => 'xsd:date'),
'solde'=> array('name' => 'solde', 'type' => 'xsd:decimal'),
'identifient'=> array('name' => 'identifient', 'type' => 'xsd:string'),
'photo' => array('name' => 'photo', 'type' => 'xsd:string'),
'fid'=> array('name' => 'fid', 'type' => 'xsd:int'),
'codebarre' => array('name' => 'codebarre', 'type' => 'xsd:string')
));
$server->register('InsertUser',array('cordonne'=>'tns:cordonne'),array('return' =>'xsd:string'));
function InsertUser($cordonne){
$cordonne=array();
$db1=new PDO('mysql:host=localhost;dbname=service','root','');
/* $req1 = $db1->prepare("SELECT * FROM myusers WHERE identifient =:identifient");
$req1->execute(array(':identifient' =>$identifient));
$count = $req1->rowCount();
if($count){
return "existe déja";
}else{*/
$id=$cordonne['id'];
$prenom = $cordonne['nom'];
$lastname = $cordonne['prenom'];
$datedebut = $cordonne['datedebut'];
$solde = $cordonne['solde'];
$login = $cordonne['identifient'];
$photo =$cordonne['photo'];
$fid=$cordonne['fid'];
$codebarre=$cordonne['codebarre'];
$req=$db1->prepare("insert into myusers values(:ID,:Prenom,:LastName,:dateDebut,:solde,:identifient,:photo,:fidelit,:CodeBarre)");
$req->execute(array(':ID'=>$id,':Prenom'=>$prenom,':LastName'=>$lastname,':dateDebut'=>date("Y-m-d", strtotime( $datedebut)),':solde'=>$solde,
':identifient'=>$login,':photo'=>$photo,':fidélit'=>$fid,':CodeBarre'=>$codebarre));
return "client ajouter";
}
Client code:
error_reporting(E_ALL);
// Pull in the NuSOAP code
require_once('lib/nusoap.php');
// Create the client instance
$client = new nusoap_client('http://localhost/testajout/server.php');
$cordonne['id']=NULL;
$cordonne['nom']=$_POST['nom'];
$cordonne['prenom']=$_POST['prenom'];
$cordonne['datedebut']=$_POST['dateDebut'];
$cordonne['solde']=$_POST['solde'];
$cordonne['identifient']=$_POST['identifient'];
$cordonne['photo']=$_POST['photo'];
$cordonne['fid']=$_POST['clientFid'];
$cordonne['codebarre']=$_POST['codebarre'];
$res = $client->call('InsertUser',array('cordonne'=>$cordonne));
print_r($res);
Nothing is display.
Please use the correct array keys in the definition of complextype array
$server->wsdl->addComplexType(
'cordonne',
'complexType',
'struct',
'all',
'',
array(
'id'=> array('name' => 'id', 'type' => 'xsd:int'),
'prenom'=> array('name' => 'prenom', 'type' => 'xsd:string'),
'lastname'=> array('name' => 'lastname', 'type' => 'xsd:string'),
'datedebut'=> array('name' => 'datedebut', 'type' => 'xsd:date'),
'solde'=> array('name' => 'solde', 'type' => 'xsd:decimal'),
'identifient'=> array('name' => 'identifient', 'type' => 'xsd:string'),
'photo' => array('name' => 'photo', 'type' => 'xsd:string'),
'fid'=> array('name' => 'fid', 'type' => 'xsd:int'),
'codebarre' => array('name' => 'codebarre', 'type' => 'xsd:string')
));
And instead of passing the array with key to the server just send the array without key
$res = $client->call('InsertUser',array($cordonne));
I have some problems with response in SOAP. In general I can not undertand how to get response as multidimensional associative array for my SOAP-client.
I used NuSOAP v 1.123 library.
So I have that code in SOAP-server:
$server->wsdl->addComplexType(
'ReturnDataInside',
'complexType',
'struct',
'all',
'',
array(
'message' => array('name' => 'message', 'type' => 'xsd:string', 'nillable' => 'true'),
'value' => array('name' => 'value', 'type' => 'xsd:string', 'nillable' => 'true'),
)
);
$server->wsdl->addComplexType(
'ReturnDataOutside',
'complexType',
'array',
'all',
'',
array(),
array(),
'tns:ReturnDataInside'
);
$server->register('test',
array('param_1' => 'xsd:int', 'param_2' => 'xsd:string'),
array('return' => 'tns:ReturnDataOutside')
);
function test($param_1, $param_2)
{
$data = array(
'test' => array(
'message' => 'string',
'value' => 'string',
),
);
return $data;
}
My response looks like that:
Array
(
[0] => Array
(
[message] => string
[value] => string
)
)
So what to change to get 'test' as a key in my response m.array ?
First of all body of my function was incorrect.
$data[] = array(
'message' => 'string',
'value' => 'string',
);
And the answer on my quastion is:
soap does not send keys for multidimensional arrays.
Has anyone had experience with the domainbox.com api? I have never done anything like this before and any help would be really appreciated. What i'm trying to do is using php send the request and bring back the results displaying them on the page but to be honest i don't even know where to start or if this is even the best way to do it.
html
<form action="searchdomain.php" method="post">
domain: <input type="text" name="domainname">
<input type="submit">
</form>
php
<?php
$client = new SoapClient('https://live.domainbox.net/?WSDL', array('soap_version' => SOAP_1_2));
// populate the inputs....
$params = array(
'AuthenticationParameters' => array(
'Reseller' => 'pulseinternet',
'Username' => 'roy_admin',
'Password' => '*********'
),
'CommandParameters' => array(
'DomainName' => '($_POST["domainname"])',
'LaunchPhase' => 'GA'
)
);
$result = $client->CheckDomainAvailability($params, AvailabilityStatus);
print_r($result);
?>
results
stdClass Object ( [CheckDomainAvailabilityResult] => stdClass Object ( [ResultCode] => 250 [ResultMsg] => TLD '' not supported [TxID] => d015865c-b99e-400f-94b9-badf89b0216f [AvailabilityStatus] => 3 [AvailabilityStatusDescr] => ErrorOccurred [LaunchPhase] => GA [DropDate] => [BackOrderAvailable] => [AdditionalResults] => stdClass Object ( ) ) )
Thanks in advance Roy
Here you are a working example:
$dom = 'test12309go.com';
$tld = '.com,.net,.org';
//$client = new SoapClient('https://sandbox.domainbox.net/?WSDL', array('trace' => true, 'soap_version' => SOAP_1_2));
$client = new SoapClient('https://live.domainbox.net/?WSDL', array('trace' => true, 'soap_version' => SOAP_1_2));
$params = array(
'AuthenticationParameters' => array(
'Reseller' => 'MyReseller',
'Username' => 'MyUsername',
'Password' => 'MyPassword'
),
'CommandParameters' => array(
'DomainName' => $dom,
'TLDs' => $tld,
'Limit' => '10',
'CheckAtRegistry' => true,
'DomainCheck' => array(
'Include' => true
),
'NameSuggestions' => array(
'Include' => false
),
'PremiumDomains' => array(
'Include' => false
),
)
);
$result = $client->CheckDomainAvailabilityPlus($params);
//echo $client->__getLastRequest();
print_r($result);
i have a problem with passing an array to a web-service function that i created with php and nusoap.
the problem is that i guess i'm doing something wrong.. i suspect that the problem is in the function or in my client side. when i send an array it doesn't go into the function i registered with the web-service. i only get response of empty array when i call the web-service.
i hope someone can help me here.
thanks.
EDIT: I managed to fix it. i forgot to build a struct for the request.
server side:
<?php
//include nusoap
require_once('c:\\wamp\\www\\nusoap.php');
//create server instance
$server = new soap_server();
//configure wsdl
$server->wsdl->schemaTargetNamespaces = 'urn:GetArr';
$server->configureWSDL('GetArr','urn:GetArr');
$server->wsdl->addComplexType(
'Product',
'complexType',
'struct',
'all',
'',
array(
'name' => array('name' => 'name', 'type' => 'xsd:string'),
'code' => array('name' => 'code', 'type' => 'xsd:string'),
'price' => array ('name' => 'price', 'type' => 'xsd:int'),
'quantity' => array ('name' => 'quantity', 'type' => 'xsd:int'),
'total_price' => array('name' => 'total_price', 'type' => 'xsd:int')
));
//this is what i was missing
$server->wsdl->addComplexType(
'ArrayReq',
'complexType',
'struct',
'all',
'',
array(
'name' => array('name' => 'name', 'type' => 'xsd:string'),
'code' => array('name' => 'code', 'type' => 'xsd:string'),
'price' => array ('name' => 'price', 'type' => 'xsd:int'),
'quantity' => array ('name' => 'quantity', 'type' => 'xsd:int')
));
//until here.
$server->wsdl->addComplexType(
'ProductArray',
'complexType',
'array',
'',
'SOAP-ENC:Array',
array(),
array(
array('ref'=>'SOAP-ENC:arrayType','wsdl:arrayType'=>'tns:Product[]')),
'tns:Product');
//function that get and return values
function GetTotalPrice ($proArray) {
$temparray = array();
$temparray[] = array('name' => $proArray['name'], 'code' => $proArray['code'], 'price' => $proArray['price'], 'quantity'
=> $proArray['quantity'], 'total_price' => $proArray['quantity'] * $proArray['price']);
return $temparray;
};
//register the method
$server->register('GetTotalPrice',
array('proArray' => 'tns:ArrayReq'),// and this line also.
array('return' => 'tns:ProductArray'),
'urn:GetArr',
'urn:GetArr#GetTotalPrice',
'rpc',
'encoded',
'Get the product total price'
);
//run the service
$post = file_get_contents('php://input');
$server->service($post);
?>
client side
<?php
//include nusoap
require_once('c:\\wamp\\www\\nusoap.php');
ini_set ('soap.wsdl_cache_enabled', 0);
$arr['name'] = "GoPro";
$arr['code'] = "245";
$arr['price'] =70;
$arr['quantity'] = 4;
$sClient = new nusoap_client('http://localhost/nusoap/comserv.php?wsdl','wsdl','','','','');
$response = $sClient->call('GetTotalPrice',array($arr),'','', false,true);
$error = $sClient->getError();
if ($error) {
echo "<h2>Constructor error</h2><pre>" . $error . "</pre>";
}
if ($sClient->fault) {
echo "<h2>Fault</h2><pre>";
echo ($response);
echo "</pre>";
}
else {
$error = $sClient->getError();
if ($error) {
echo "<h2>Error</h2><pre>" . $error . "</pre>";
}
if ($response != "" || NULL){
echo "<h2>Respond</h2><pre>";
print_r ($response);
echo "</pre>";
}
}
?>
this is the output(respond)
Respond
Array
(
[0] => Array
(
[name] =>
[code] =>
[price] =>
[quantity] =>
[total_price] => 0
)
)
EDIT:
this is the fixed output.
Respond
Array
(
[0] => Array
(
[name] => GoPro
[code] => 245
[price] => 70
[quantity] => 4
[total_price] => 280
)
)
ok so i fixed it. i added comments so anyone can see what i added in order to make it work..
i needed to make a struct for the request so my function will know the array type. also fixed it in the function registration.
Hi I have a soap server written in nusoap that should return an array like:
Array
(
[Learner_Detail] => Array
(
[Learner_Id] => 09070567
[Known_As] => Aaron
[Name] => Mr Aaron Hawley
[Year] => 2011
[Tutor_Name] =>
[Prior_Institution] => Bishop of Rochester Academy
[Employer_Name] =>
[Gender] => Male
[Ethnicity] => White - English / Welsh / Scottish / Northern Irish / British
[Nationality] => UNITED KINGDOM
[DOB] => 07 Jul 1995
[Age_at_end_of_Aug] => 16
)
[Other] => Array
(
[NI_Number] =>
[ULN] => 7966088560
[University_Number] =>
[LLDHP] => No Disability
)
)
I have the following code to setup and register my server
$server->wsdl->addComplexType(
'Learner_Details',
'complexType',
'struct',
'all',
'',
array(
'Learner_Id' => array('name' => 'Learner_Id', 'type' => 'xsd:string'),
'Known_As' => array('name' => 'Known_As', 'type' => 'xsd:string'),
'Name' => array('name' => 'Name', 'type' => 'xsd:string'),
'Year' => array('name' => 'Year', 'type' => 'xsd:string'),
'Tutor_Name' => array('name' => 'Tutor_Name', 'type' => 'xsd:string'),
'Prior_Institution' => array('name' => 'Prior_Institution', 'type' => 'xsd:string'),
'Employer_Name' => array('name' => 'Employer_Name', 'type' => 'xsd:string'),
'Gender' => array('name' => 'Gender', 'type' => 'xsd:string'),
'Ethnicity' => array('name' => 'Ethnicity', 'type' => 'xsd:string'),
'Nationality' => array('name' => 'Nationality', 'type' => 'xsd:string'),
'DOB' => array('name' => 'DOB', 'type' => 'xsd:string'),
'Age_at_end_of_Aug' => array('name' => 'Age_at_end_of_Aug', 'type' => 'xsd:string'),
)
);
$server->wsdl->addComplexType(
'Contact_Details',
'complexType',
'struct',
'all',
'',
array(
'Email' => array('name' => 'Email', 'type' => 'xsd:string'),
'Mobile_Tel' => array('name' => 'Mobile_Tel', 'type' => 'xsd:string'),
'Home_Phone' => array('name' => 'Home_Phone', 'type' => 'xsd:string'),
'Daytime_Phone' => array('name' => 'Daytime_Phone', 'type' => 'xsd:string'),
'Emergency_Home_Tel' => array('name' => 'Emergency_Home_Tel', 'type' => 'xsd:string'),
'SCON_Daytime_Number' => array('name' => 'SCON_Daytime_Number', 'type' => 'xsd:string'),
'Emergency_Mobile' => array('name' => 'Emergency_Mobile', 'type' => 'xsd:string'),
'EMR_Relationship_to_Learner' => array('name' => 'EMR_Relationship_to_Learner', 'type' => 'xsd:string'),
'Prior_Attainment_Level' => array('name' => 'Prior_Attainment_Level', 'type' => 'xsd:string'),
'Address_1' => array('name' => 'Address_1', 'type' => 'xsd:string'),
'Address_2' => array('name' => 'Address_2', 'type' => 'xsd:string'),
'Address_3' => array('name' => 'Address_3', 'type' => 'xsd:string'),
'Address_4' => array('name' => 'Address_4', 'type' => 'xsd:string'),
'Address_5' => array('name' => 'Address_5', 'type' => 'xsd:string'),
'Country' => array('name' => 'Country', 'type' => 'xsd:string'),
'Postcode' => array('name' => 'Postcode', 'type' => 'xsd:string'),
'GNAL_to_Date' => array('name' => 'GNAL_to_Date', 'type' => 'xsd:string'),
'EMAL_EMA_Number' => array('name' => 'EMAL_EMA_Number', 'type' => 'xsd:string'),
'EMAL_ALG_Ref' => array('name' => 'EMAL_ALG_Ref', 'type' => 'xsd:string'),
'Left_College' => array('name' => 'Left_College', 'type' => 'xsd:string'),
'Rest_Use' => array('name' => 'Rest_Use', 'type' => 'xsd:string'),
'Student_Status' => array('name' => 'Student_Status', 'type' => 'xsd:string'),
'CoD' => array('name' => 'CoD', 'type' => 'xsd:string'),
)
);
$server->wsdl->addComplexType(
'Other',
'complexType',
'struct',
'all',
'',
array(
'NI_Number' => array('name' => 'NI_Number', 'type' => 'xsd:string'),
'ULN' => array('name' => 'ULN', 'type' => 'xsd:string'),
'University_Number' => array('name' => 'University_Number', 'type' => 'xsd:string'),
'LLDHP' => array('name' => 'LLDHP', 'type' => 'xsd:string'),
)
);
$server->wsdl->addComplexType(
'OtherArray',
'complexType',
'array',
'',
'SOAP-ENC:Array',
array(),
array(
array('ref'=>'SOAP-ENC:arrayType','wsdl:arrayType'=>'tns:Other[]')
),
'tns:Other'
);
$server->wsdl->addComplexType(
'Learner_DetailsArray',
'complexType',
'array',
'',
'SOAP-ENC:Array',
array(),
array(
array('ref'=>'SOAP-ENC:arrayType','wsdl:arrayType'=>'tns:Learner_Details[]')
),
'tns:Learner_Details'
);
$server->wsdl->addComplexType(
'Contact_DetailsArray',
'complexType',
'array',
'',
'SOAP-ENC:Array',
array(),
array(
array('ref'=>'SOAP-ENC:arrayType','wsdl:arrayType'=>'tns:Contact_Details[]')
),
'tns:Contact_Details'
);
$server->wsdl->addComplexType(
'totalInfo',
'complexType',
'struct',
'all',
'',
array(
'Learner_Details' => array('name' => 'Learner_Details', 'type' => 'tns:Learner_DetailsArray'),
'Contact_Details' => array('name' => 'Contact Details', 'type' => 'tns:Contact_DetailsArray'),
'Other' => array('name' => 'Other', 'type' => 'tns:OtherArray'),
)
);
$server->register(
'getStudentInfoById3',
array('name' => 'xsd:string'),
array('return' => 'tns:totalInfo'),
$namespace
);
I have a function that gets data from sql, feeds it into and array and then returns is the soap server. I have checked this code and know that it is returning an aaray as it should.
However when a test the service via soap ui I don't get my array returned in the xml. In stead I just get
<SOAP-ENV:Envelope SOAP-ENV:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:SOAP-ENC="http://schemas.xmlsoap.org/soap/encoding/" xmlns:tns="http://xmlservicesdev.midkent.ac.uk/soap/Course">
I read the documentation and several tutorials and examples but I can't seem to get this working correctly. Can anyone help please?