CURL コマンドを使用してインスタンスへの SOAP 呼び出しを行う方法DescriptionSOAP API の使用時に発生する可能性のある問題のトラブルシューティングを行うため、CURL コマンドを使用してインスタンスへの SOAP コールを作成する手順について説明します。ResolutionSOAP 要求フロー ステップ 1: A.送信する必要がある要求を含む SOAP エンベロープを作成します 注: SOAP 要求パラメーターは、WSDL が公開するパラメーターによって異なります。 <soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:inc="http://www.service-now.com/incident"> <soapenv:Header/> <soapenv:Body> <inc:get> <sys_id><enter_sys_ID_of_record_to_retrieve</sys_id> </inc:get> </soapenv:Body></soapenv:Envelope> B.XML ファイルとして保存します。 (例 test.xml) ステップ 2: ターミナルに入力する CURL コマンドを作成します。 curl --username:password --header "Content-Type: text/xml;charset=UTF-8" --header "SOAPAction: ACTION_YOU_WANT_TO_CALL" --data @FILE_NAME URL_OF_THE_SOAP_WEB_SERVICE_ENDPOINT 例 1:「インスタンス」から WSDL を使用している場合 curl --user xyz:abc123 --header "Content-Type: text/xml;charset=UTF-8" --header "SOAPAction:Get" --data @test.xml https://<instance_name>.service-now.com/incident.do?SOAP 例 2:「ノード」から WSDL を使用している場合 curl --user xyz:abc123 --header "Content-Type: text/xml;charset=UTF-8" --header "SOAPAction:Get" --data @test.xml https://<noce_name>.service-now.com:<Port_Number>/incident.do?SOAP ステップ 3: ターミナルまたはコマンドプロンプトでコマンドを実行します。 トラブルシューティング: 予期した出力が得られない場合は、CURL コマンドに詳細パラメーターを追加することにより、詳細情報が表示されます。 詳細パラメーターを指定した CURL コマンドの例: curl --user xyz:abc123 --header "Content-Type: text/xml;charset=UTF-8" --header "SOAPAction:Get" --data @test.xml https://<instance_name>.service-now.com/incident.do?SOAP -v 一般的な問題: 1. 要求を含むファイルを読み取れない エラー: <SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/"><SOAP-ENV:Header/><SOAP-ENV:Body><SOAP-ENV:Fault><faultcode>SOAP-ENV:Server</faultcode><faultstring>Unable to parse SOAP document</faultstring><detail>Error completing SOAP request</detail></SOAP-ENV:Fault></SOAP-ENV:Body></SOAP-ENV:Envelope> 解決方法: SOAP 要求を含むファイルの内容と形式を確認します。 2.指定されたユーザーの資格情報が間違っているか、ユーザーに WSDL へのアクセスが許可されない エラー: ......< HTTP/1.1 401 Unauthorized< Set-Cookie: JSESSIONID=5C48D05E518DC37DA6502440F2FD8361; Path=/; HttpOnly;Secure* Authentication problem. Ignoring this....... 解決策:ユーザーの資格情報を確認し、ユーザーによるレコードへのアクセスをブロックする ACL がないかどうかを確認します。 3.WSDLが正しくないか、間違っています。 エラー: * Could not resolve host: <URL_OF_THE_SOAP_WEB_SERVICE_ENDPOINT>* Closing connection 0curl: (6) Could not resolve host: URL_OF_THE_SOAP_WEB_SERVICE_ENDPOINT 解決方法 : curl コマンドで正しい URL が指定されているかどうかを確認します。 Additional InformationSOAP メッセージSOAP ロールSOAP メッセージ関数SOAP デフォルトセキュリティポリシー