小编Cry*_*ICE的帖子

ruby savon和wsdl命名空间

我有一个问题,我认为是关于名称空间的问题.WSDL可以从这里下载:http://promostandards.org/content/wsdl/Order%20Shipment%20NotificationService/1.0.0/OSN-1-0-0.zip

生成请求时,它看起来像这样:

<soapenv:Envelope xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:tns="http://www.promostandards.org/WSDL/OrderShipmentNotificationService/1.0.0/" xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/">
<soapenv:Body>
<tns:GetOrderShipmentNotificationRequest>
  <tns:wsVersion>1.0.0</tns:wsVersion>
  <tns:id>myusername</tns:id>
  <tns:password>mypassword</tns:password>
  <tns:queryType>3</tns:queryType>
  <tns:shipmentDateTimeStamp>2017-07-19</tns:shipmentDateTimeStamp>
</tns:GetOrderShipmentNotificationRequest>
</soapenv:Body>
</soapenv:Envelope>
Run Code Online (Sandbox Code Playgroud)

这导致肥皂故障.

当SoapUI使用相同的WSDL构造请求时,它看起来像这样

<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:ns="http://www.promostandards.org/WSDL/OrderShipmentNotificationService/1.0.0/" xmlns:shar="http://www.promostandards.org/WSDL/OrderShipmentNotificationService/1.0.0/SharedObjects/">
<soapenv:Header/>
<soapenv:Body>
  <ns:GetOrderShipmentNotificationRequest>
     <shar:wsVersion>1.0.0</shar:wsVersion>
     <shar:id>myusername</shar:id>
     <shar:password>mypassword</shar:password>
     <ns:queryType>3</ns:queryType>
     <ns:shipmentDateTimeStamp>2017-07-19</ns:shipmentDateTimeStamp>
  </ns:GetOrderShipmentNotificationRequest>
</soapenv:Body>
</soapenv:Envelope>
Run Code Online (Sandbox Code Playgroud)

您可以看到SoapUI已将用户名和密码放在"shar"命名空间内.我注意到这并没有直接列在WSDL或WSDL直接加载的任何XSD文件中.它被加载类似WSDL => XSD file =>包含shar命名空间的XSD文件.这可能是问题吗?如何将命名空间添加到3个键中?我正在使用savon 2.11.1和nori 2.6.0

这是我最终使用的解决方案:

@client = Savon.client(
    wsdl: 'OSN-1-0-0/WSDL/1.0.0/OrderShipmentNotificationService.wsdl',
    endpoint: @endpoint,
    env_namespace: :soapenv,
    namespaces: { "xmlns:shar" => "http://www.promostandards.org/WSDL/OrderShipmentNotificationService/1.0.0/SharedObjects/" },
    element_form_default: :qualified,
    headers: { "accept-encoding" => "identity" }
)

response = @client.call(:get_order_shipment_notification, message: {
    'shar:ws_version': @version,
    'shar:id': @username, 
    'shar:password': @password, …
Run Code Online (Sandbox Code Playgroud)

ruby wsdl web-services savon

5
推荐指数
1
解决办法
341
查看次数

Git-bash(Cygwin)和vagrant-berkshelf

使用git-bash运行vagrant命令时遇到问题.例如,如果我运行vagrant状态,我将收到错误消息"无法加载"vagrant-berkshelf"插件."如果我从正常的Windows命令行运行相同的命令,它将正常工作.如果我运行"VAGRANT_LOG = info vagrant status",输出如下:

$ VAGRANT_LOG=info vagrant status
 INFO global: Vagrant version: 1.4.3
 INFO global: Ruby version: 2.0.0
 INFO global: RubyGems version: 2.0.14
 INFO global: VAGRANT_DETECTED_OS="MINGW32_NT-6.1"
 INFO global: VAGRANT_INSTALLER_EMBEDDED_DIR="c:/HashiCorp/Vagrant/bin/../embedded"
 INFO global: VAGRANT_INSTALLER_ENV="1"
 INFO global: VAGRANT_INSTALLER_VERSION="2"
 INFO global: VAGRANT_LOG="info"
 INFO manager: Registered plugin: box command
 INFO manager: Registered plugin: destroy command
 INFO manager: Registered plugin: halt command
 INFO manager: Registered plugin: help command
 INFO manager: Registered plugin: init command
 INFO manager: Registered plugin: package command
 INFO manager: Registered plugin: plugin …
Run Code Online (Sandbox Code Playgroud)

cygwin git-bash vagrant berkshelf

4
推荐指数
1
解决办法
1820
查看次数

使用ubuntu preseed和packer的无密码sudo

我试图向在Ubuntu 14.04安装期间创建的用户授予无密码sudo权限.但是,创建映像时,不存在与sudo相关的任何更改.以下是预置文件的相关部分:

# Create Vagrant User
d-i passwd/user-fullname string Vagrant User
d-i passwd/username string vagrant
d-i passwd/user-password password vagrant
d-i passwd/user-password-again password vagrant
d-i user-setup/encrypt-home boolean false
d-i user-setup/allow-password-weak boolean true

# Setup passwordless sudo for vagrant user
d-i preseed/late_command string echo "vagrant   ALL=(ALL:ALL) NOPASSWD:ALL" > /target/etc/sudoers.d/vagrant
d-i preseed/late_command string chmod 0440 /target/etc/sudoers.d/vagrant
Run Code Online (Sandbox Code Playgroud)

我也试过了

d-i preseed/late_command string in-target echo "vagrant ALL=(ALL:ALL) NOPASSWD:ALL" > /etc/sudoers.d/vagrant
Run Code Online (Sandbox Code Playgroud)

当图像完成/etc/sudoers.d/vagrant将不存在于任何地方.

即使我运行命令:

d-i preseed/late_command string mkdir /stuff
d-i preseed/late_command string in-target mkdir /stuff
Run Code Online (Sandbox Code Playgroud)

stuff目录将不存在.

我知道这些命令正在运行,因为我曾经输错了一次并在安装过程中看到了错误.所有其他preseed命令似乎都在工作.

我已经阅读了有关in-target指令的信息,安装程序将创建一个具有最终文件系统的/ …

linux ubuntu packer

4
推荐指数
2
解决办法
3694
查看次数

标签 统计

berkshelf ×1

cygwin ×1

git-bash ×1

linux ×1

packer ×1

ruby ×1

savon ×1

ubuntu ×1

vagrant ×1

web-services ×1

wsdl ×1