2012-03-14 10 views
2

私はフォーム変数をURLに追加するColdFusionページを持っています。私はPHPでこのコードを複製しようとしている:cfhttp "POST" in PHP

<cfhttp method="Post" url='http://api.test.com/import-lead-data.php'> 
      <cfoutput> 
       <cfhttpparam name="BAL_ONE" type="formField" value="#BAL_ONE#"> 
     <!--- <cfhttpparam name="MTG_ONE_INT" type="formField" value="#MTG_ONE_INT#"> 
       <cfhttpparam name="MTG_TWO" type="formField" value="#MTG_TWO#"> 
       <cfhttpparam name="BAL_TWO" type="formField" value="#BAL_TWO#"> 
       <cfhttpparam name="ADD_CASH" type="formField" value="#ADD_CASH#">---> 
       <cfhttpparam name="PRODUCT" type="formField" value="#PRODUCT#"> 
       <cfhttpparam name="PROP_ST" type="formField" value="#PROP_ST#"> 
       <cfhttpparam name="CRED_GRADE" type="formField" value="#CRED_GRADE#"> 
       <cfhttpparam name="PROP_ZIP" type="formField" value="#PROP_ZIP#"> 
       <cfhttpparam name="PROP_DESC" type="formField" value="#PROP_DESC#"> 
       <cfhttpparam name="SPEC_HOME" type="formField" value="#SPEC_HOME#"> 
       <cfhttpparam name="PURCHASE_CONTRACT" type="formField" value="#PURCHASE_CONTRACT#"> 
       <cfhttpparam name="EST_VAL" type="formField" value="#EST_VAL#"> 
       <cfhttpparam name="DOWN_PMT" type="formField" value="#DOWN_PMT#"> 
       <cfhttpparam name="LOAN_TYPE" type="formField" value="#LOAN_TYPE#"> 
       <cfhttpparam name="BUY_TIMEFRAME" type="formField" value="#BUY_TIMEFRAME#"> 
       <cfhttpparam name="AGENT_FOUND" type="formField" value="#AGENT_FOUND#"> 
       <cfhttpparam name="VA_STATUS" type="formField" value="#VA_STATUS#"> 
       <cfhttpparam name="INCOME" type="formField" value="#INCOME#"> 
       <cfhttpparam name="ANNUAL_VERIFIABLE_INCOME" type="formField" value="#ANNUAL_VERIFIABLE_INCOME#"> 
       <cfhttpparam name="FHA_BANK_FORECLOSURE" type="formField" value="#FHA_BANK_FORECLOSURE#"> 
       <cfhttpparam name="NUM_MORTGAGE_LATES" type="formField" value="#NUM_MORTGAGE_LATES#"> 
       <cfhttpparam name="EMAIL" type="formField" value="#EMAIL#"> 
       <cfhttpparam name="FNAME" type="formField" value="#FNAME#"> 
       <cfhttpparam name="LNAME" type="formField" value="#LNAME#"> 
       <cfhttpparam name="ADDRESS" type="formField" value="#ADDRESS#"> 
       <cfhttpparam name="CITY" type="formField" value="#CITY#"> 
       <cfhttpparam name="STATE" type="formField" value="#STATE#"> 
       <cfhttpparam name="ZIP" type="formField" value="#ZIP#"> 
       <cfhttpparam name="PRI_PHON" type="formField" value="#PRI_PHON#"> 
       <cfhttpparam name="SEC_PHON" type="formField" value="#SEC_PHON#"> 
       <cfhttpparam name="CAPTURE_METHOD" type="formField" value="#CAPTURE_METHOD#"> 
       <cfhttpparam name="AID" type="formField" value="#AID#"> 
       <cfhttpparam name="SRLP" type="formField" value="#SRLP#"> 
       <cfhttpparam name="SCid" type="formField" value="#SCid#"> 
       <cfhttpparam name="BUYER_ID" type="formField" value="#BUYER_ID#"> 
       <cfhttpparam name="CID" type="formField" value="#CID#"> 
       <cfhttpparam name="PPCID" type="formField" value="#session.PPCID#"> 
      </cfoutput> 
     </cfhttp> 

私はhttpRquest(メタ:ポスト)を使用すると仮定しますか?確信はないけど。

+0

このコードブロックは、あなたが記述したことを行いません。 「フォーム変数をURLに追加するColdFusionページがある」と言っていますが、このブロックではそのようにはできません。このブロックは、フォームフィールドだけでHTTP POST要求を行います。 URL変数は何もしません。 –

+0

申し訳ありませんが、このcfhttpは指定されたURLにフォーム変数をポストします。別のPHPページで同じことをしたいのです。 –

答えて

2

:ここhttp://framework.zend.com/manual/en/zend.http.html

は、POSTリクエストを行うためにCURLを使用した例です。

$url = 'http://api.test.com/import-lead-data.php'; 
$result = file_get_contents($url); 

これは、標準的なGETリクエストを作成します。それはあなたが標準のファイルベースとストリーム関連の機能でそれを使用できることを意味します。これは、代わりにGETのPOSTリクエストになるだろう

$url = 'http://api.test.com/import-lead-data.php'; 
$options['http'] = array(
    'method' => "POST", 
);  
$context = stream_context_create($options);  
$result = file_get_contents($url, NULL, $context); 

:しかし、あなたはPOSTリクエストを持ちたい、したがって、あなたは、いくつかのcontext options­Docsを追加する必要があります。まだ欠けているのはフォームフィールドです。あなたは、キー=>値のペアの配列内のすべてのフィールドを持っているとしましょう:便利です

$url = 'http://api.test.com/import-lead-data.php'; 
$content = http_build_query($form_fields);  
$options['http'] = array(
    'method' => "POST", 
    'content' => $content, 
);  
$context = stream_context_create($options);  
$result = file_get_contents($url, NULL, $context); 

希望。当然のことながら、http_post_dataまたはhttp_post_fieldsの機能も利用できます。

も参照してください。HEAD first with PHP Streams

0

HTTP PECL拡張モジュール(HTTPRequestクラスを含む)は、デフォルトのPHPインストールの一部ではありません。

私はCURL:http://php.net/manual/en/book.curl.phpを見ていきます。 HTTPメソッドとパラメータを設定できます。

それとも、あなたはフレームワークを使用して気にしない場合は、ZendのFW HTTPクライアントモジュールをチェックアウト:PHP HTTP is intergrated as a so called stream wrapper­Docshttp://davidwalsh.name/execute-http-post-php-curl

+0

http_post_dataの使用はどうですか? –

+0

これはPECL拡張の一部です。あなたがPECLモジュールをインストールできる環境で作業しているなら、それを手に入れてください!私は、コードを移植性の低いものにするため、可能なときにこれを避ける傾向があります。 –

+0

http_post_data構文はどのように見えますか? –