Как передать .NET сервису массив объектов с помощью SOAP

zingan

Новичок
Как передать .NET сервису массив объектов с помощью SOAP

Есть веб сервис на C#
http://***.net/account.asmx
нужно обратиться к его функциям с использованием PHP __soapCall()

Вот в чём проблемка:
у функции Add последний параметр это массив объектов
из C# её вызывают так
properties = new Property[] {AdvAccount.Add("company", "company_name")};
service.Add(...., "subaccount", "account", properties);

описание - properties
public partial class Property {
private string nameField;
private object valueField;
public string Name {
get {return this.nameField;}
set {this.nameField = value;}
}
public object Value {
get {return this.valueField;}
set {this.valueField = value;}
}
}

Тоесть, проблема сводится к передаче веб сервису в качестве параметра массива объектов.
это мой вариант - неправильный ;(

$pr = new propertyClass ("name1", "value1");
$prVar = new SoapVar($pr, SOAP_ENC_OBJECT, "Property");
$prVarAr[]= $prVar;
$pr = new propertyClass ("name2", "value2");
$prVar = new SoapVar($pr, SOAP_ENC_OBJECT, "Property");
$prVarAr[]= $prVar;
$prVarArPar = new SoapVar($prVarAr, SOAP_ENC_ARRAY, "ArrayOfProperty");

$param=array(
...........
"properties" =>$prVarArPar
);
$res = $service->__soapCall( "Add", array('parameters' => $param));

Надоумьте плиз.
 

Sigorma

Новичок
zingan
согласно этому http://****.net/account.asmx?op=Add максимум что от тебя требуется передать в агрументах это инты и стринги.
Не получится сформировать запрос всегда есть curl

-~{}~ 26.01.10 16:33:

судя по контексту линк точно не для паблика :)
 

zingan

Новичок
да, первые 6 параметров действительно можно пеердать как string, а седьмой ArrayOfProperty.

получилось!
гораздо проще чем я строил изначально
class propertyClass{
public $Name;
public $Value;
public function __construct ($name, $value){
$this->Name = $name;
$this->Value = $value;
}
}
$pr = new propertyClass ("name1", "value1");
$prVarAr[]= $pr;
$pr = new propertyClass ("name2", "value2");
$prVarAr[]= $pr;
$param=array("properties" => $prVarAr);
$res = $service->__soapCall( "Add", array(...., 'parameters' =>$param));

-~{}~ 26.01.10 19:44:

Ещё один вопрос.
На веб сервисе есть переназначенный (Overwriting) метод - одинаковые названия и колличество парамметров, но их типы разные. Со стороны C# отличаются парамметром MessageName.
Подскажите пожалуйста как вызвать именно нужный мне екземпляр метода.
Судя по докам надо использовать soapaction, - не получается... :(
 

confguru

ExAdmin
Команда форума
Вы там осторожнее с линками..
я понимаю что мы банда и своего брата разработчик4а не сдадим.. но клуб очень хорошо индексируется :)
 
Сверху