2016-09-27 16 views
0

私は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です。

答えて

0

あなたのスクリプトで作業を実際にないが何であるかを説明していませんが、私は--http-userオプション引数のタイプミスを発見した可能性があります:あなたは、バックスラッシュをエスケープしませんでした。 --http-user="theDomain\\theUser"でお試しいただけますか?

+0

スクリプトの問題は、要求が送信されると、応答が403 FORBIDDENになることです。バックスラッシュを追加しても効果はありません。私の主な関心事は、上記の質問に対する理解を得ることです:-) – buzztr

関連する問題