私はwgetを使ってWebサービスをテストして、それがどのように動作するのかをよりよく理解しようとしています。wget、webservice、SOAP
瞬間に、私はこのように見ている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
私が読んだものから、SOAPアクションフィールドは、すでにHTTPリクエストURIので、「」HTTP上でSOAPのために必須であるあってもよいですSOAPメッセージの意図を提供します。
これは、私が行ったように2箇所でURIを提供するのではなく、SOAPAction: ""を持たせることをお勧めしますか?
SOAPActionが完全に指定されている場合、私のコードは間違っていますか? SOAPAction URIはHTTP要求URIと同じであるべきですか?
私が見た例では、ネームスペース(xmlns :)のリストは、リクエストで使用されているものよりも多くなっています。例えば。私はしばしばxmlns:ns3 = "http://schemas.microsoft.com/2003/10/Serialization/"を見たことがありますが、要求ではns3を使用しません。それはなぜですか?
また、私はスクリプトを動作させることができません。要求が投稿された後、応答は403 FORBIDDENです。
スクリプトの問題は、要求が送信されると、応答が403 FORBIDDENになることです。バックスラッシュを追加しても効果はありません。私の主な関心事は、上記の質問に対する理解を得ることです:-) – buzztr