Status Codes


← 戻る

この要素は要求された操作が成功したか、一時エラーか、または永久エラーかを通知します。Status には次の属性があります。

属性 説明
code (必須) 要求の状況コード。たとえば、200 は要求が成功したことを示します。下記のコード表を参照してください。
text (必須) 状況のテキスト。このテキストは、英語で記述された標準的なエラー表記で、ユーザーが判読できるログです。
xml:lang Status 要素で使用されるデータの言語。cXML 1.0 との互換性を目的としたオプションです。cXML の将来のバージョンで必要となる場合があります。

Status 要素の属性は、要求の結果を表します。以下に例を示します。

<Status xml:lang="en-US" code="200” text="OK"> </Status>

Status 要素の内容には、申請者が必要なあらゆるデータを記述することができますが、エラーに関する情報を記述するようにしてください。200/OK 状況コードには、データが存在しない場合があります。ただし、500/Internal ServerError 状況コードまたはその他の類似するコードには、実際の XML 解析エラーまたはアプリケーションエラーを含めることを強く推奨します。このエラーは、一方向のデバッグや相互運用性のテストをする際に役立ちます。以下に例を示します。

<Status code="406" text="Not Acceptable">cXML did not validate. Big Problem!</Status>

次の表は、cXML 状況コードの範囲を示します。

範囲 意味
2xx 成功
4xx 永久エラー。クライアントは、再試行しないでください。このエラーの場合、申請は承認されていません。
5xx 一時エラー。一般的には転送エラーです。クライアントは、再試行してください。推奨する再試行回数は、1 時間おきに 10 回です。少なくとも 6 回の再試行を推奨します。緊急なオーダーなど、重要度の高い申請に関しては、再試行頻度を上げてもかまいません。

cXML 状況コードが 200 番台 (cXML 200/OK など) でない限り、サーバーには追加の Response 要素(PunchOutSetupResponse 要素など) を含めないでください。ほとんどの場合、cXML は HTTP の上の階層にあるため、多くのエラー (HTTP 404/Not Found など) はトランスポートによって発生しています。すべてのトランスポートエラーは、cXML 500 番台の状況コードを受け取った時と同様に一時エラーとして取り扱い、クライアントは再試行する必要があります。HTTP 404/Not found や HTTP 500/Internal Server Error 状況コードなどの、有効な cXML コンテンツを含まない HTTP Response は、すべて転送エラーであるとみなされます。転送に関するその他の一般的な問題には、タイムアウト、TCP エラー (「connection refused」など)、および DNS エラー (「host unknown」など) があります。Request ドキュメントの構文解析における検証エラーの場合、一般的には 400 番台、多くは 406/Not Acceptable の cXML 永久エラーが発生します。

次の表に、発生し得る cXML 状況コードを示します。

ステータス テキスト 意味
200 OK サーバーは Request を実行しました。または、最終受信者へ結果を送信しました。返された Response には、アプリケーションの注意またはエラーが含まれる可能性があります。cXML Request 自身はエラーも注意も生成しませんでしたが、この状況はその後のアプリケーションで発生し得るいかなるエラーや注意も、反映されません。後の処理でエラーが発生しない限り、この状況の更新情報は受け取りません。
201 Accepted 中間ハブによって転送の Request が受け入れられました。または、その最終の宛先によって受信されましたが、解析はされていません。送信するメカニズムが利用可能であれば、Request に関する状況の更新情報を受け取ります。クライアントはこの後 StatusUpdate トランザクションを受信します。
204 No Content すべての Request 情報は有効で、認識されました。サーバーには、要求されたタイプの Response データがありません。PunchOutOrderMessage において、この状況はパンチアウトセッションがショッピングカート (または、クライアントの購入申請) に対する変更なしに終了したことを示します。
211 OK バイヤーはこの状況コードを使用して、サプライヤが把握する必要があるイベント (休日のスケジュール、生産設備の閉鎖、特定の活動の完了 (たとえば、計画実行完了) など)を通知するために、サプライヤにブロードキャストメッセージを送信することができます。
280 中間ハブにより Request が転送されました。少なくとももう 1 つの状況更新情報を受け取ります。この状況は、Request が別の中間転送者、または、状況 201 で最終受信者に送信されたか、信頼できる非 cXML のトランスポートを経由して転送されたことを意味する場合があります。
281 非確実なトランスポート (電子メールなど) を使用して、中間ハブにより Request が転送されました。状況更新情報を受け取る可能性があります。ただし、状況更新情報を受け取らない場合、必ずしも問題があるというわけではありません。
400 Bad Request 構文解析では問題がありませんが、サーバーが Request を受け入れられませんでした。
401 Unauthorized Request (Sender 要素) の中で指定されている Credential が、サーバーに認識されませんでした。
402 Payment Required Request には、完全な Payment 要素が含まれていなければなりません。
403 Forbidden ユーザーが、Request を実行するための十分な権限を持っていません。
406 Not Acceptable Request はサーバーに受け入れられませんでした。構文解析の失敗によるものと推測されます。
409 Conflict サーバーの現在の状況またはその内部データにより、(更新) 操作要求が中断されました。同様の Request は、別の操作の実行後以外では、今後も正常に実行される可能性はありません。
412 Precondition Failed Request の前提条件 (PunchOutSetupRequest edit に対する適切なパンチアウトセッションなど) が満たされていませんでした。この状況は、一般的には、サーバーからの以前の転送の一部をクライアントが無視したことを意味します
(PunchOutOrderMessageHeader の operationAllowed 属性など)。
417 Expectation Failed Request のリソース条件が満たされなかったことを示します。1 つの例として、サーバーが未知のサプライヤに関する情報を要求する SupplierDataRequest があります。この状況は、クライアントまたはサーバーで消失した情報があることを示します。
450 Not Implemented サーバーは指定の Request を実装していません。たとえば、PunchOutSetupRequest、もしくは要求された操作がサポートされていない可能性があります。一般的に、この状況はクライアントがサーバーのプロファイルを無視した
ことを示します。
475 Signature Required ドキュメントに電子署名がないため、受信者はドキュメントを受け付けようとしません。
476 Signature Verification Failed 転送中にドキュメントが変更、または署名で使用されたアルゴリズムの 1 つまたは複数を受信者がサポートしないなどの原因により、受信者は署名を検証することができません。
477 Signature Unacceptable 署名は技術的に有効ですが、その他の理由により受信者に承認されません。署名規定または証明書規定が承認されないか、使用された証明書の種類が承認されないか、またはその他の問題が存在する可能性があります。
500 Internal Server Error サーバーが Request を完了できませんでした。
550 Unable to reach cXML server 次の処理のための接続が必要なトランザクションは、次の cXML サーバーに到達できず完了できません。サプライヤサイトに到達できないとき、中間ハブがこのコードを返すことがあります。次への接続が完了した場合、中間ハブはエラーをクライアントに直接返さなければなりません。
551 Unable to forward request サプライヤの設定ミスにより、Request を転送できません。たとえば、中間ハブがサプライヤに対し自身の認証に失敗しました。クライアントはこのエラーを修正できませんが、クライアントが再試行する前にこのエラーが解決される場合があります。
560 Temporary server error たとえば、サーバーは保守などで停止することがあります。クライアントは後で再試行してください。

認識されないコードを受信したとき、cXML クライアントはコードのクラスに従ってそれらのコードを処理する必要があります。したがって、古いクライアントは、すべての新しい 2xx コードを 200 (成功)、4xx コードを 400 (永久エラー)、および 5xx コードを 500 (一時エラー) として処理する必要があります。この動作は、今後、相互運用性を損なわずに、cXML プロトコルとサーバー固有のコードが拡張されることを考慮しています。