2017-10-09 14 views
0

私はColdfusionの開発者で、10年以上も前から変更を加えています。古いColfusion 9コードをノードjに移植する作業をしています。私は、当社のデータにアクセスするために第三者APIに接続することに苦労しています。レガシーColdFusionコードをNode.jsに移植する - cfhttp/request.js

これは、外部サービスに接続され、現在のColdFusionコードです:

<cfsavecontent variable="thiscontent"> 
     <post> 
      <username>[email protected]</username> 
      <password>Pa$$w0rd</password> 
     </post> 
</cfsavecontent> 

<cfhttp url="https://API.ENDPOINT" method="post" result="httpResponse" > 
    <cfhttpparam type="FormField" name="xml" value="#Trim(thiscontent)#" /> 
</cfhttp> 

このコードは見つけ動作し、サービスから期待されるXMLオブジェクトを返します。しかし、興味深いのは、の「method = "post" "」を削除すると、ノードと接続しようとするときと同じエラーが発生します。

ノードの場合、express.jsを使用してエンドポイントと対話しています。ここで私は、コード使用していますされています。私はCFHTTPからポストパラメータを削除すると、同じエラーが発生することを言ったとき

<?xml version="1.0"?> 
<response><status>FAILURE</status><message>No XML string passed</message></response> 

覚えておいてください:

reqOpts = { 
     url: 'http://API.ENDPOINT', 
     method: 'post', 
     headers: { 
      'Content-Type': 'application/xml' 
     }, 
     body: '<post><username>[email protected]</username><password>Pa44w0rd</password></post>' 
    } 
    var getNew = request(reqOpts, function(err, resp, body){ 
     console.log(body) 
    }) ; 

これは、その後、次のエラーを返しますか?私はこれをノードの中でまったく動作させることはできないようです。

私はrequest()。form、request()。authなどを使用してみましたが、成功しませんでした。常にNO XML STRING PASSEDエラーです。

私は非常に助けに感謝します。

答えて

1

ColdFusionコードでは、xmlという名前のFormFieldを使用しました。

はストレートリクエストボディにXMLを置くのではなく、Node.jsの中で同じ操作を行います:

reqOpts = { 
    url: 'http://API.ENDPOINT', 
    method: 'post', 
    headers: { 
     'Content-Type': 'application/xml' 
    }, 
    form: { 
     xml: '<post><username>[email protected]</username><password>Pa44w0rd</password></post>' 
    } 
} 
var getNew = request(reqOpts, function(err, resp, body) { 
    console.log(body) 
}) ; 
+0

まあ、そのシンプルに。私はノードの中でこのようなフォームに名前をつけることができないことを知りませんでした。正しい方向を指してくれてありがとう、データにアクセスできます。 –

関連する問題