首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >对soap4r自定义头感到困惑

对soap4r自定义头感到困惑
EN

Stack Overflow用户
提问于 2009-10-11 22:55:43
回答 1查看 755关注 0票数 0

我正在尝试设置到Celltrust的SMS网关的web服务。我有他们的软件开发工具包,我正在尝试使用soap4r来创建它所需的自定义标头。我不确定我到底需要做些什么才能将其转换为他们的格式,因为他们并没有为我提供一个实际的XML文档来显示他们所需要的内容;他们所说的只是在头文件中需要提供用户名和密码。

给定下面的PHP示例代码,我该如何在Ruby中做到这一点呢?

代码语言:javascript
复制
$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“。

有人能帮我吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2009-10-30 20:23:32

您需要创建SOAP::Header::SimpleHandler的子类,正如您所提到的:

代码语言:javascript
复制
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

那就这样做:

代码语言:javascript
复制
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')
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/1552014

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档