我有一个ColdFusion页面,它附加一个带有表单变量的URL。我正在尝试在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(meth:post)?但我不确定。
答案 0 :(得分:2)
在PHP HTTP is intergrated as a so called stream wrapperDocs中。这意味着您可以将它与标准的文件和流相关的函数一起使用:
$url = 'http://api.test.com/import-lead-data.php';
$result = file_get_contents($url);
这将创建一个标准的GET请求。但是你想要一个POST请求,因此你需要添加一些context optionsDocs:
$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请求而不是GET。表单字段仍然缺少什么。假设你有一个key =&gt;数组中的所有字段。价值对:
$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
功能,也可以使用它。
答案 1 :(得分:0)
HTTP PECL扩展(包含HTTPRequest类)不是默认PHP安装的一部分。
我会看一下CURL:http://php.net/manual/en/book.curl.php。您可以设置HTTP方法和参数。
或者,如果您不介意使用框架,请查看Zend FW HTTP客户端模块:http://framework.zend.com/manual/en/zend.http.html
以下是使用CURL执行发布请求的示例:http://davidwalsh.name/execute-http-post-php-curl