0

Zoho Creator と ebay Trading API の 2 つのサービスに参加する API プロキシの作成についてサポートが必要です

Zoho Creator は json で https POST を送信する可能性がありますが、Zoho のコンストラクターは多層 json (単純なペアのみ) をサポートしていません。eBay 取引 API は https XML のみを受け入れます。

シンプルなjsonリクエストを送信します

{“XMLDATA”:”<GeteBayOfficialTimeRequest xmlns="urn:ebay:apis:eBLBaseComponents">...}

これを、本文に XMLDATA の値を含む XML リクエストに変換し、ヘッダーの Content-type: のタイプを「text/xml」に変更する必要があります。

Zoho 作成者からのリクエストを投稿すると、apigee で Content-type: application/x-www-form-urlencoded Content-length: 234 Content: を取得します。 XMLDATA=%3CGeteBayOfficialTimeRequest+xmlns%3D%22urn%3Aebay%3Aapis%3AeBLBaseComponents%22%3E+%3CRequesterCredentials%3E+%3CeBayAuthToken%3EMyToken%3C%2FeBayAuthToken%3E+%3C%2FRequesterCredentials%3E+%3C%2FGeteBayOfficialTimeRequest%3E

XMLDATA の値 - エンコードされた URL。

誰かがそれを機能させる方法を手伝ってくれますか。

終了時に必要なもの:

Content-type: text/xml

次のようなコンテンツ:

<?xml version="1.0" encoding="utf-8"?><GeteBayOfficialTimeRequest xmlns="urn:ebay:apis:eBLBaseComponents"><RequesterCredentials><eBayAuthToken>
4

4 に答える 4

2

かなり簡単に見えますが、何か不足している場合はお知らせください。

1) ExtractVariables ポリシー

受信ペイロードが次のようになっている場合:

{“XMLDATA”:”&lt;GeteBayOfficialTimeRequest xmlns="urn:ebay:apis:eBLBaseComponents">...}

次に、次のような JSON 抽出を行います。

<JSONPayload>
    <Variable name="xmldata">
        <JSONPath>$.XMLDATA</JSONPath>
    </Variable>
</JSONPayload>

これは、リクエストの Content-Type が application/json の場合にのみ機能します (強制したい場合は、その直前に AssignMessage ポリシーを実行し、

<Set>
  <Headers>
    <Header name="Content-type">application/json</Header>
  </Headers>
</Set>

2) 新しい POST ペイロードを作成するための AssignMessage ポリシー

xmldata という名前の変数ができたので、次のように AssignMessage ポリシーを使用して新しいリクエスト メッセージを作成できます。

  <Payload contentType="text/xml">
    &lt;?xml version="1.0" encoding="utf-8"?&gt;
    &lt;GeteBayOfficialTimeRequest xmlns="{xmldata}"&gt;
    &lt;RequesterCredentials&gt;
    &lt;eBayAuthToken&gt;
    </Payload>
  </Set>

ペイロード XML の < と > をエスケープする必要があることに注意してください(そうしないと、Apigee は設定 XML として解析しようとします)。{xmldata} 変数が中括弧で囲まれていることに注意してください。

ポリシーの詳細が必要な場合は、Apigee のドキュメントへのリンクを次に示します。

変数の抽出 http://apigee.com/docs/api-services/content/extract-message-content-using-extractvariables

メッセージの割り当て http://apigee.com/docs/api-services/content/extract-message-content-using-extractvariables

于 2014-01-24T00:54:48.947 に答える
1

XML を JSON 内に配置する場合は、XML がエスケープされていることを確認し、適切に処理する必要があります。そうしないと、JSON が無効になります。可能であれば、必要なデータを含む JSON リクエストを送信してみてください。XML は埋め込まないでください。次に、前の回答が示唆したように:

  1. ExtractVariablesポリシーと構成を使用して、JSON 要求ペイロードから必要な情報を抽出します<JSONPath>
  2. AssignMessageポリシーを使用して XML 要求を作成します。
于 2014-01-24T01:15:44.417 に答える
0

まあ、私はそれが動作します。Zoho Creatorで

headerMap = map();
headerMap.put("X-EBAY-API-COMPATIBILITY-LEVEL", "855");
headerMap.put("X-EBAY-API-DEV-NAME", "...");
headerMap.put("X-EBAY-API-APP-NAME", "...");
headerMap.put("X-EBAY-API-CERT-NAME", "...");
headerMap.put("X-EBAY-API-SITEID", "3");
headerMap.put("X-EBAY-API-CALL-NAME", "GetItem");
token = “...”;
reqMap = map();
reqMap.put("token", token);
reqMap.put("xmlns", "urn:ebay:apis:eBLBaseComponents");
reqMap.put("body", "<ItemID>...itemid...</ItemID>");
url = ".....apigeeurl......";
resp = postUrl(url, reqMap, headerMap);

1) ExtractVariables ポリシー

<ExtractVariables async="false" continueOnError="false" enabled="true" name="extractform">
<DisplayName>ExtractVar</DisplayName>
<FaultRules/>
<Properties/>
<Header name="X-EBAY-API-CALL-NAME">
    <Pattern ignoreCase="false">{CallName}</Pattern>
</Header>
<FormParam name="token">
    <Pattern>{token}</Pattern>
</FormParam>
<FormParam name="xmlns">
    <Pattern>{xmlns}</Pattern>
</FormParam>
  <FormParam name="body">
    <Pattern>{body}</Pattern>
</FormParam>
<IgnoreUnresolvedVariables>true</IgnoreUnresolvedVariables>
<Source clearPayload="false">request</Source>
</ExtractVariables>

2) 新しい POST を作成するための AssignMessage ポリシー

<AssignMessage async="false" continueOnError="false" enabled="true" name="getebayofficialtime">
<DisplayName>FormXml</DisplayName>
<FaultRules/>
<Properties/>
<Set>
    <Headers>
        <Header name="Content-type">text/xml</Header>
    </Headers>
    <Payload>
&lt;?xml version="1.0" encoding="utf-8"?&gt;
&lt;{CallName}Request xmlns="{xmlns}"&gt;
&lt;RequesterCredentials&gt;
&lt;eBayAuthToken&gt;{token}&lt;/eBayAuthToken&gt;
&lt;/RequesterCredentials&gt;
{body}
&lt;/{CallName}Request&gt;
</Payload>
</Set>
<IgnoreUnresolvedVariables>true</IgnoreUnresolvedVariables>
<AssignTo createNew="false" transport="http" type="request"/>
</AssignMessage>
于 2014-01-27T12:04:08.523 に答える