我是一名新手,尝试使用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。
答案 0 :(得分:0)
您无法解释实际上不使用您的脚本的内容,但我可能在This is a test
123
选项参数中发现了一个拼写错误:您没有逃避反斜杠。你可以试试--http-user
吗?