私はこれに数日間取り組んでいますが、理解できません。ColdFusion を使用して WSDL Web サービス要求を EchoSign に送信するために必要なデータ構造を作成しようとしています。単純な構造 (testPing および testEchoFile の動作) の送信には問題はありませんが、ドキュメントの送信に必要な構造 (sendDocument) のようなネストされた構造を試みると、「パラメーターを使用した Web サービス操作 sendDocument ... が見つかりません」と言って失敗します。多くの試みの1つ:
<cfset strFilePath = "#ExpandPath("tempupload/file.pdf")#" />
<cffile action="readbinary" file="#strFilePath#" variable="FileData" >
<cfscript>
apiKey = "MY_API_KEY";
documentCreationInfo = structNew();
documentCreationInfo.recipients = structNew();
documentCreationInfo.recipients.recipientInfo = arrayNew(1);
documentCreationInfo.recipients.recipientInfo[1] = structNew();
documentCreationInfo.recipients.recipientInfo[1].email = "myemail@gmail.com";
documentCreationInfo.recipients.recipientInfo[1].role = "SIGNER";
documentCreationInfo.name = "test";
documentCreationInfo.fileInfos = structNew();
documentCreationInfo.fileInfos.fileInfo = arrayNew(1);
documentCreationInfo.fileInfos.fileInfo[1] = structNew();
documentCreationInfo.fileInfos.fileInfo[1].fileName = "file.pdf";
documentCreationInfo.fileInfos.fileInfo[1].file = #FileData#;
documentCreationInfo.signatureType = "ESIGN";
documentCreationInfo.signatureFlow = "SENDER_SIGNATURE_NOT_REQUIRED";
ws = createObject("webservice", "https://secure.echosign.com/services/EchoSignDocumentService16?wsdl");
response = ws.sendDocument(apiKey = '#apiKey#', documentCreationInfo = #documentCreationInfo#);
</cfscript>
他のプログラミング言語を使用した例を見てきましたが、ColdFusion によって作成された配列と構造体の処理が異なるようで、あまり役に立ちませんでした。SOAP XML を作成する必要はありません。どんな助けでも大歓迎です。
わかりやすくするために、ColdFusion を使用し、EchoSign と通信し、sendDocument コマンドを使用するときに送信する必要があるデータの構造を次に示します。
<cfset strFilePath = "#ExpandPath("tempupload/file.pdf")#" />
<cffile action="readbinary" file="#strFilePath#" variable="FileData" >
<cfscript>
apiKey = "MY_API_KEY";
documentCreationInfo = structNew();
documentCreationInfo.recipients = structNew();
documentCreationInfo.recipients.recipientInfo = arrayNew(1);
documentCreationInfo.recipients.recipientInfo[1] = structNew();
documentCreationInfo.recipients.recipientInfo[1].email = "recipient@gmail.com";
documentCreationInfo.recipients.recipientInfo[1].role = "SIGNER";
documentCreationInfo.name = "test";
documentCreationInfo.fileInfos = structNew();
documentCreationInfo.fileInfos.fileInfo = arrayNew(1);
documentCreationInfo.fileInfos.fileInfo[1] = structNew();
documentCreationInfo.fileInfos.fileInfo[1].fileName = "file.pdf";
documentCreationInfo.fileInfos.fileInfo[1].file = #FileData#;
documentCreationInfo.signatureType = "ESIGN";
documentCreationInfo.signatureFlow = "SENDER_SIGNATURE_NOT_REQUIRED";
senderInfo = structNew();
senderInfo.email = "sender@gmail.com";
senderInfo.password = "password";
senderInfo.userKey = "";
ws = createObject("webservice", "https://secure.echosign.com/services/EchoSignDocumentService16?wsdl");
response = ws.sendDocument(apiKey = '#apiKey#', senderInfo = #senderInfo#, documentCreationInfo = #documentCreationInfo#);
</cfscript>
受信者やファイルなど、複数のエントリを含むことができるデータの場合、データは構造体の配列に格納されます。この例では、受信者が 1 人しかいないため、配列 recipientInfo には配列要素 recipientInfo[1] が 1 つしかありませんが、このセクションを繰り返して recipientInfo[2] などを使用するだけで、受信者を簡単に追加できます。複数のエントリは、email、password、および userKey の要素を持つ単なる構造体です。ドキュメントによると、userKey は電子メールとパスワードのエントリを上書きします。シングル サインオンを使用するために、電子メール、パスワード、および userKey の空のデータを送信しようとしましたが、うまくいきませんでした。私の質問は、senderInfo に NULL 値を送信して、デフォルトで API 所有者になるようにするにはどうすればよいですか?