我正在尝试设置到Celltrust的SMS网关的web服务。我有他们的软件开发工具包,我正在尝试使用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的派生类。我不确定的是,我是否需要指定名称空间两次(一次用于用户名,一次用于密码),或者它是如何生成的。文档没有给命名空间起任何名字,我也不确定如何正确地调用Ruby语言中的"new SoapHeader“。
有人能帮我吗?
发布于 2009-10-30 20:23:32
您需要创建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')https://stackoverflow.com/questions/1552014
复制相似问题