0

XMLをサービスに送信したいのですが。そのサービスの説明には、「XMLドキュメントはuriencodedで投稿する必要があり、UTF-8文字をparamaeter'xml'として〜/ api / xmlapi.phpに設定する必要があります」と記載されており、スクリプトの例があります。

xmlHttp=GetXmlHttpObject(receiveXML);
var url = "api/xmlapi.php";
var params = "xml=" + document.getElementById('xml').value;
xmlHttp.open("POST", url, true);

//Send the proper header information along with the request
xmlHttp.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
xmlHttp.setRequestHeader("Content-length", params.length);
xmlHttp.setRequestHeader("Connection", "close");
xmlHttp.send(params);

XMLの形式もサービスによって指定され、ユーザーがフォームフィールドに入力した値をXMLに「入力」する必要があります。

Form Builderを使用してHTTPサービスを作成しようとしていますが、すべての標準オプションを試しましたが成功しませんでした(有効なhttp-200。ただし応答はありません)。たぶん、「xml=」パラメータ設定と関係があります。

提出物のソースコードをカスタマイズする必要がありますか?

4

1 に答える 1

0

まず、Form Builderはこのユースケースを念頭に置いて設計されたものではないため、ここで説明する内容が複雑に感じられる場合は、ご容赦ください。この例を再作成する代わりに実行する場合(これをお勧めします)、最初に最終フォームのソースをダウンロードし、 [ソースの編集]ダイアログから新しいフォームに貼り付けて、そのフォームのソースを置き換えます。

  1. まず、サービスを作成します。上記のPHPコードでは、XMLの受け渡しに使用されるパラメーターの名前はxml、であるため、リクエストの本文は。である必要があります<xml/>。(もしそうならgaga、リクエストの本文はである必要があります<gaga/>。)

    サービス

  2. ここでボタンが押されたときにトリガーされるアクションを作成します。コントロールの値を使用xml-sentしてパラメーターの値をxml設定するため、/xml DestinationXPath式が使用されます。これは何xml-sentですか?これは次のステップで確認します。

    アクション

  3. 常に非表示に設定した「内部」セクションで、テキスト出力コントロールを追加し、名前を付けてxml-sent、次の式のように計算されるように設定します。ここで読みやすくするために、この式を3行に配置しましたが、FormBuilderの[検証プロパティ]ダイアログに1行入力する必要があります。ここで、送信するXMLドキュメントが何であれ、どのように作成しているかに注意してください。次に、を使用saxon:serialize()してそのXMLドキュメントを「テキスト」に変換します。これがxml-sentコントロールの値になります。デバッグでは、セクションを表示して、XMLがフォームに表示され、サービスに何が送信されるかを確認できます。

    saxon:serialize(xxf:element('person', (
        xxf:element('first', string($first-name)), 
        xxf:element('first', string($last-name)))), 'xml')
    
于 2013-03-07T03:32:54.930 に答える