0

CelltrustのSMSゲートウェイへのWebサービスをセットアップしようとしています。私は彼らのSDKを持っており、soap4rを使用して必要なカスタムヘッダーを作成しようとしています。必要なものを示す実際のXMLドキュメントが提供されていないため、フォーマットで取得するために何をする必要があるのか​​正確にはわかりません。彼らが言うのは、ヘッダーにユーザー名とパスワードを指定する必要があるということだけです。

次のPHPサンプルコードを考えると、Rubyでこれをどのように行うのでしょうか?

$URN = "urn:notify.soap.primemessage.com";  
$WSDL="http://pmgateway.net/pmws/services/TxTMessageService?wsdl";  

//SOAP elements (don’t edit, and case sensitive!)  
$CTUSERNAME = "Username";  
$CTPASSWORD = "Password";  
$CTNICKNAME = "nickname";  
$DESTINATION = "destination";  
$MESSAGE = "message";  

$USER_ID = "USERNAME"; //your username at CellTrust  
$NICKNAME = "NICKNAME";           //your nickname at Celltrust  
$PASSWORD = "PASSWORD"; //your password at Celltrust  

//create user and password SOAP header elements  
$UserHdr = new SoapHeader( $URN, $CTUSERNAME, $USER_ID, false);  
$PassHdr = new SoapHeader( $URN, $CTPASSWORD, $PASSWORD, false);  

// call the method here

SOAP :: Header::SimpleHandlerの派生クラスを作成しました。名前空間を2回(ユーザー名に1回、パスワードに1回)指定する必要があるのか​​、それともどのように生成されるのかがわかりません。ドキュメントには名前空間の名前が記載されておらず、Rubyで「newSoapHeader」を正しく呼び出す方法がわかりません。

誰かがこれを手伝ってくれますか?

4

1 に答える 1

0

言及したように、SOAP::Header::SimpleHandler のサブクラスを作成する必要があります。

class MyHandler < SOAP::Header::SimpleHandler

  def initialize(namespace, name, value)
    super(XSD::QName.new(namespace, name))
    @value = value
  end

  def on_simple_outbound
    @value
  end
end

次に、次のようにします。

namespace = 'INSERT_NAMESPACE_URL_HERE'
# 'driver' below is the Soap4R driver for the service
driver.headerhandler << MyHandler.new(namespace, 'Username', 'INSERT_USERNAME_HERE')
driver.headerhandler << MyHandler.new(namespace, 'Password', 'INSERT_PASSWORD_HERE')
于 2009-10-30T12:23:31.560 に答える