2

次のコードは CF10 で正常に動作しています。

httpSvc = New http();
httpSvc.setMethod("post"); 
httpSvc.setCharset("utf-8"); 
httpSvc.setUrl(svcLocation);
httpSvc.setClientCert(certLocation);
httpSvc.setClientCertPassword(certPassword);
httpSvc.addParam(type="body", name="body",value=requestParameters);
result = httpSvc.send().getPrefix();

requestParameters の値は次のとおりです。

<?xml version="1.0" encoding="UTF-8"?> 
<S:Envelope xmlns:S="http://schemas.xmlsoap.org/soap/envelope/"> 
<S:Body> 
<ns2:processCreditCard xmlns:ns2="urn:com.qvalent.payway.api"> 
<requestParameters>customer.orderNumber=5396&amp;card.CVN=070&amp;order.amount=101&amp;customer.merchant=xxxx&amp;card.expiryMonth=08&amp;card.expiryYear=20&amp;order.ECI=SSL&amp;card.PAN=0000000000000008&amp;card.currency=AUD&amp;customer.username=xxxxxx&amp;order.type=capture&amp;customer.password=xxxxxxx</requestParameters> 
</ns2:processCreditCard> 
</S:Body> 
</S:Envelope>

ただし、CF9 サーバーに配置すると、応答 FileContent が空になり、次のステータス コードが返されます。

415 Unsupported Media Type

完全な応答を表示するリンクは次のとおりです: http://www.onoffezy.com/_testing/gateway/

Google をトロールすると、415 ステータス コードは、クライアントが要求した MIME タイプがサーバーで利用できないことを示します。ただし、リクエスト用に MIME タイプを設定できる場所が見つかりませんでした。cf9 と cf10 でデフォルトの MIME タイプに違いはありますか?

両方のバージョンのドキュメントを詳しく調べましたが、これを説明する違いが見つかりません。

誰かがこれに光を当てることができ、CF9で何をする必要があるかを教えていただければ、非常に高く評価されます.

どうもありがとう

4

3 に答える 3

2

助けてくれたすべてに感謝します。問題を見つけました。

httpSvc.addParam(type="body", name="body",value=requestParameters);

次のように変更する必要があります:

httpSvc.addParam(type="xml", name="body",value=requestParameters);

cf9はtype='body'をBinaryとして送信しているように見えますが、cf10はそれを文字列として送信するか、xmlであると判断してそのように処理します。タイプを「xml」に変更すると、cf9はバイナリではなくxmlの文字列として送信を開始しました。

于 2013-02-20T00:16:51.867 に答える
1

これで問題が解決するとは断言できませんが、'Accept' 要求ヘッダーを応答のコンテンツ タイプに設定してみましたか?

例えば:

acceptType = "text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8" httpSvc.addParam(name="Accept", value=acceptType, type="header");

于 2013-02-19T04:08:52.417 に答える
1

ドキュメント hereによるとtype="body" 、HTTPリクエストの本文を指定します。ColdFusion は、コンテンツ タイプ ヘッダーを自動的に設定したり、本文のコンテンツを URL エンコードしたりしません。content-type を指定するには、type=header を含む別の cfhttpparam タグを使用します。 そのため、リクエストにこのヘッダーを指定すると役立つ場合があります。

何かのようなもの:

httpSvc.addParam(type="header", name="Content-Type", value="application/x-www-form-urlencoded");

あなたはあなたの体の内容の例を提供しませんでした. 特定のコンテンツ タイプの値をいじる必要がある場合があります。 利用可能な MIME タイプのリストを次に示します

例の変数の単語パラメーターのスペルが間違っていrequestParamatersます。それの価値は何ですか?

于 2013-02-19T14:16:16.607 に答える