Using webservice on PHP (my solution)

Use this forum for questions regarding adoption and functionality of OpenEMM

Moderator: moderator

lbrenes
Posts: 6
Joined: Mon Mar 16, 2009 8:24 pm

Using webservice on PHP (my solution)

Post by lbrenes »

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:

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
2. Next, with wsdl2php (http://www.urdalen.no/wsdl2php/), generate a PHP class file like this:

Code: Select all

php wsdl2php.php openemm.wsdl
This step generate a file called EmmWebService_PortService.php

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);

?>
I don't know how to attach files, so I paste here EmmWebService_PortService.php code:

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)
maschoff
Site Admin
Posts: 2609
Joined: Thu Aug 03, 2006 10:20 am
Location: Munich, Germany
Contact:

Post by maschoff »

Thanks for sharing this with the OpenEMM community, we appreciate that!
OpenEMM Maintainer
lbrenes
Posts: 6
Joined: Mon Mar 16, 2009 8:24 pm

Post by lbrenes »

ma wrote:Thanks for sharing this with the OpenEMM community, we appreciate that!

Your welcome! :wink:
Post Reply