wget,webservice和SOAP

时间:2016-09-27 07:42:12

标签: xml web-services soap wget

我是一名新手,尝试使用wget测试网络服务,以便更好地了解它是如何工作的。

目前,我有一个看起来像这样的bash脚本:

#!/bin/bash

REQUEST="<?xml version=\"1.0\" ?><S:Envelope xmlns:S=\"http://schemas.xmlsoap.org/soap/envelope/\" xmlns:ns2=\"http://schema.thecompany.se/header/v1\" xmlns:ns3=\"http://messages.thecompany.se/theServicePath/theService/v1\"><S:Body><ns3:theRequest><ns2:identity>1234567</ns2:identity></ns3:theRequest></S:Body></S:Envelope>"

MY_FILE="/tmp/myfile.xml"
echo $REQUEST > $MY_FILE

/usr/bin/wget -O - --no-cache -dv --http-user="theDomain\theUser" --http-password="aPassword" \
        --post-file=$MY_FILE \
        --header="SOAPAction: \"http://xmlns.thecompany.com/path/theService/theRequest\"" \
        --header="Content-Type: text/xml; charset=utf-8;" \
        --auth-no-challenge \
        --no-check-certificate \
        https://service.thecompany.com/path/theServicePath/theService_v1.svc/basic

从我读过的内容来看,SOAPAction字段对于SOAP over HTTP是强制性的,但可能是&#34;&#34;因为HTTP请求URI已经提供了SOAP消息的意图。

这是推荐的方式,使用SOAPAction:&#34;&#34;而不是像我一样在两个地方提供URI?

如果完全指定了SOAPAction,我的代码是错误的吗? SOAPAction URI应该与HTTP请求URI相同吗?

在我看到的示例中,命名空间列表(xmlns :)比请求中使用的更多。例如。我经常看到xmlns:ns3 =&#34; http://schemas.microsoft.com/2003/10/Serialization/"但从不在请求中使用ns3。为什么这样做?

另外,我无法让脚本运行。发布请求后,响应为403 FORBIDDEN。

1 个答案:

答案 0 :(得分:0)

您无法解释实际上使用您的脚本的内容,但我可能在This is a test 123 选项参数中发现了一个拼写错误:您没有逃避反斜杠。你可以试试--http-user吗?