Using webservice on PHP (my solution)
Posted: Fri Mar 20, 2009 2:43 pm
Hi everyone,
I had problems with webservice (Bad types problem, specialy org.xml.sax.SAXException: Bad types (class java.lang.String - class org.agnitas.webservice.StringArrayType)), but now It's working fine. I want to share this because can help someone (I hope):
1. Generate my own wsdl file like this:
2. Next, with wsdl2php (http://www.urdalen.no/wsdl2php/), generate a PHP class file like this:
This step generate a file called EmmWebService_PortService.php
You can use it like this. This a little example:
I don't know how to attach files, so I paste here EmmWebService_PortService.php code:
_____________________________________________________________
BTW, I'm using OpenEMM 5.5.1, Apache 1.3.41 with PHP 5.2.6 (--enable-soap)
I had problems with webservice (Bad types problem, specialy org.xml.sax.SAXException: Bad types (class java.lang.String - class org.agnitas.webservice.StringArrayType)), but now It's working fine. I want to share this because can help someone (I hope):
1. Generate my own wsdl file like this:
Code: Select all
./EmmCreateWSDL.sh -o openemm.wsdl -l "http://localhost:8080/emm_webservice" -n "urn:agnitas-webservice" -w ALL org.agnitas.webservice.EmmWebService_Port
Code: Select all
php wsdl2php.php openemm.wsdl
You can use it like this. This a little example:
Code: Select all
<?php
require 'EmmWebService_PortService.php';
$username = "ws-user";
$password = "ws-password";
$wsdlfile = "openemm.wsdl";
$paramNames = new StringArrayType();
$paramNames->x[0] = "email";
$paramNames->x[1] = "gender";
$paramNames->x[2] = "mailtype";
$paramNames->x[3] = "firstname";
$paramNames->x[4] = "lastname";
$paramNames->x[5] = "custom_field1";
$paramNames->x[6] = "custom_field2";
$paramNames->x[7] = "custom_field3";
$paramNames->x[8] = "custom_datefield4_YEAR_DATE";
$paramNames->x[9] = "custom_datefield4_MONTH_DATE";
$paramNames->x[10] = "custom_datefield4_DAY_DATE";
$paramValues = new StringArrayType();
$paramValues->x[0] = "me@hostname.com";
$paramValues->x[1] = "0";
$paramValues->x[2] = "1";
$paramValues->x[3] = "John";
$paramValues->x[4] = "D";
$paramValues->x[5] = "1050";
$paramValues->x[6] = "A";
$paramValues->x[7] = "value1";
$paramValues->x[8] = "1973";
$paramValues->x[9] = "9";
$paramValues->x[10] = "26";
$obj = new EmmWebService_PortService($wsdlfile);
$result = $obj->addSubscriber($username, $password, true, "email", true, $paramNames, $paramValues);
print_r($result);
?>
Code: Select all
<?php
class StringArrayType {
public $x; // string
}
class SubscriberData {
public $paramNames; // StringArrayType
public $paramValues; // StringArrayType
public $customerID; // int
}
/**
* EmmWebService_PortService class
*
*
*
* @author {author}
* @copyright {copyright}
* @package {package}
*/
class EmmWebService_PortService extends SoapClient {
private static $classmap = array(
'StringArrayType' => 'StringArrayType',
'SubscriberData' => 'SubscriberData',
);
public function EmmWebService_PortService($wsdl = "openemm.wsdl", $options = array()) {
foreach(self::$classmap as $key => $value) {
if(!isset($options['classmap'][$key])) {
$options['classmap'][$key] = $value;
}
}
parent::__construct($wsdl, $options);
}
/**
*
*
* @param string $in0
* @param string $in1
* @param string $in2
* @param string $in3
* @param unsignedShort $in4
* @param StringArrayType $in5
* @param unsignedShort $in6
* @param unsignedShort $in7
* @param string $in8
* @param string $in9
* @param string $in10
* @param unsignedShort $in11
* @param unsignedShort $in12
* @return unsignedShort
*/
public function newEmailMailing($in0, $in1, $in2, $in3, unsignedShort $in4, StringArrayType $in5, unsignedShort $in6, unsignedShort $in7, $in8, $in9, $in10, unsignedShort $in11, unsignedShort $in12) {
return $this->__soapCall('newEmailMailing', array($in0, $in1, $in2, $in3, $in4, $in5, $in6, $in7, $in8, $in9, $in10, $in11, $in12), array(
'uri' => 'urn:agnitas-webservice',
'soapaction' => ''
)
);
}
/**
*
*
* @param string $in0
* @param string $in1
* @param string $in2
* @param string $in3
* @param unsignedShort $in4
* @param StringArrayType $in5
* @param unsignedShort $in6
* @param unsignedShort $in7
* @param string $in8
* @param string $in9
* @param string $in10
* @param string $in11
* @param unsignedShort $in12
* @param unsignedShort $in13
* @return unsignedShort
*/
public function newEmailMailingWithReply($in0, $in1, $in2, $in3, unsignedShort $in4, StringArrayType $in5, unsignedShort $in6, unsignedShort $in7, $in8, $in9, $in10, $in11, unsignedShort $in12, unsignedShort $in13) {
return $this->__soapCall('newEmailMailingWithReply', array($in0, $in1, $in2, $in3, $in4, $in5, $in6, $in7, $in8, $in9, $in10, $in11, $in12, $in13), array(
'uri' => 'urn:agnitas-webservice',
'soapaction' => ''
)
);
}
/**
*
*
* @param string $in0
* @param string $in1
* @param unsignedShort $in2
* @param string $in3
* @param string $in4
* @param unsignedShort $in5
* @param StringArrayType $in6
* @param unsignedShort $in7
* @param string $in8
* @param string $in9
* @param string $in10
* @param string $in11
* @param unsignedShort $in12
* @param unsignedShort $in13
* @return boolean
*/
public function updateEmailMailing($in0, $in1, unsignedShort $in2, $in3, $in4, unsignedShort $in5, StringArrayType $in6, unsignedShort $in7, $in8, $in9, $in10, $in11, unsignedShort $in12, unsignedShort $in13) {
return $this->__soapCall('updateEmailMailing', array($in0, $in1, $in2, $in3, $in4, $in5, $in6, $in7, $in8, $in9, $in10, $in11, $in12, $in13), array(
'uri' => 'urn:agnitas-webservice',
'soapaction' => ''
)
);
}
/**
*
*
* @param string $in0
* @param string $in1
* @param unsignedShort $in2
* @param string $in3
* @param string $in4
* @param unsignedShort $in5
* @param unsignedShort $in6
* @return unsignedShort
*/
public function insertContent($in0, $in1, unsignedShort $in2, $in3, $in4, unsignedShort $in5, unsignedShort $in6) {
return $this->__soapCall('insertContent', array($in0, $in1, $in2, $in3, $in4, $in5, $in6), array(
'uri' => 'urn:agnitas-webservice',
'soapaction' => ''
)
);
}
/**
*
*
* @param string $in0
* @param string $in1
* @param unsignedShort $in2
* @return unsignedShort
*/
public function deleteContent($in0, $in1, unsignedShort $in2) {
return $this->__soapCall('deleteContent', array($in0, $in1, $in2), array(
'uri' => 'urn:agnitas-webservice',
'soapaction' => ''
)
);
}
/**
*
*
* @param string $in0
* @param string $in1
* @param unsignedShort $in2
* @param string $in3
* @param unsignedShort $in4
* @param unsignedShort $in5
* @param unsignedShort $in6
* @return unsignedShort
*/
public function sendMailing($in0, $in1, unsignedShort $in2, $in3, unsignedShort $in4, unsignedShort $in5, unsignedShort $in6) {
return $this->__soapCall('sendMailing', array($in0, $in1, $in2, $in3, $in4, $in5, $in6), array(
'uri' => 'urn:agnitas-webservice',
'soapaction' => ''
)
);
}
/**
*
*
* @param string $in0
* @param string $in1
* @param boolean $in2
* @param string $in3
* @param boolean $in4
* @param StringArrayType $in5
* @param StringArrayType $in6
* @return unsignedShort
*/
public function addSubscriber($in0, $in1, $in2, $in3, $in4, StringArrayType $in5, StringArrayType $in6) {
return $this->__soapCall('addSubscriber', array($in0, $in1, $in2, $in3, $in4, $in5, $in6), array(
'uri' => 'urn:agnitas-webservice',
'soapaction' => ''
)
);
}
/**
*
*
* @param string $in0
* @param string $in1
* @param unsignedShort $in2
* @return SubscriberData
*/
public function getSubscriber($in0, $in1, unsignedShort $in2) {
return $this->__soapCall('getSubscriber', array($in0, $in1, $in2), array(
'uri' => 'urn:agnitas-webservice',
'soapaction' => ''
)
);
}
/**
*
*
* @param string $in0
* @param string $in1
* @param string $in2
* @param string $in3
* @return unsignedShort
*/
public function findSubscriber($in0, $in1, $in2, $in3) {
return $this->__soapCall('findSubscriber', array($in0, $in1, $in2, $in3), array(
'uri' => 'urn:agnitas-webservice',
'soapaction' => ''
)
);
}
/**
*
*
* @param string $in0
* @param string $in1
* @param unsignedShort $in2
* @param unsignedShort $in3
* @param unsignedShort $in4
* @param unsignedShort $in5
* @param string $in6
* @param string $in7
* @param unsignedShort $in8
* @return unsignedShort
*/
public function setSubscriberBinding($in0, $in1, unsignedShort $in2, unsignedShort $in3, unsignedShort $in4, unsignedShort $in5, $in6, $in7, unsignedShort $in8) {
return $this->__soapCall('setSubscriberBinding', array($in0, $in1, $in2, $in3, $in4, $in5, $in6, $in7, $in8), array(
'uri' => 'urn:agnitas-webservice',
'soapaction' => ''
)
);
}
/**
*
*
* @param string $in0
* @param string $in1
* @param unsignedShort $in2
* @return unsignedShort
*/
public function deleteSubscriber($in0, $in1, unsignedShort $in2) {
return $this->__soapCall('deleteSubscriber', array($in0, $in1, $in2), array(
'uri' => 'urn:agnitas-webservice',
'soapaction' => ''
)
);
}
/**
*
*
* @param string $in0
* @param string $in1
* @param unsignedShort $in2
* @param unsignedShort $in3
* @param unsignedShort $in4
* @return string
*/
public function getSubscriberBinding($in0, $in1, unsignedShort $in2, unsignedShort $in3, unsignedShort $in4) {
return $this->__soapCall('getSubscriberBinding', array($in0, $in1, $in2, $in3, $in4), array(
'uri' => 'urn:agnitas-webservice',
'soapaction' => ''
)
);
}
/**
*
*
* @param string $in0
* @param string $in1
* @param unsignedShort $in2
* @param StringArrayType $in3
* @param StringArrayType $in4
* @return boolean
*/
public function updateSubscriber($in0, $in1, unsignedShort $in2, StringArrayType $in3, StringArrayType $in4) {
return $this->__soapCall('updateSubscriber', array($in0, $in1, $in2, $in3, $in4), array(
'uri' => 'urn:agnitas-webservice',
'soapaction' => ''
)
);
}
}
?>
BTW, I'm using OpenEMM 5.5.1, Apache 1.3.41 with PHP 5.2.6 (--enable-soap)