【发布时间】:2014-09-01 17:12:07
【问题描述】:
我正在尝试将 javascript (Node.js) 脚本转换为 PHP 脚本。
// Send POST request
$http({
method: 'POST',
url: 'someurl',
data: $.param($scope.formData),
headers: {'Content-Type': 'application/x-www-form-urlencoded'}
})
那是javascript。我试图通过使用此代码来复制它
$url = 'something';
$formData = array( 'code'=>$var);
$var = 'somethinghere';
$ch = curl_init( $url );
curl_setopt( $ch, CURLOPT_POST, 1);
curl_setopt( $ch, CURLOPT_POSTFIELDS, $formData);
curl_setopt( $ch, CURLOPT_FOLLOWLOCATION, 1);
curl_setopt( $ch, CURLOPT_HEADER, 'Content-type: application/x-www-form-urlencoded');
curl_setopt( $ch, CURLOPT_RETURNTRANSFER, 1);
$response = curl_exec( $ch );
echo $response;
但是,它不起作用。它不显示我想要的数据。这是一个外部 php 文件(不是我托管的),我不明白我在做什么错。
【问题讨论】:
-
curl_error() 说什么?
-
如果它不敏感,如果您提供真实的 URL 进行测试,或者至少提供一个虚拟但功能性的 URL 进行测试,将会对我们有所帮助。
-
服务器上是否启用了 curl?要检查 - 查看 php.ini 文件并查看
;是否在;extension=php_curl.dll行中被删除 -
问题很可能是请求的
Content-Type与您的预期不同:multipart/form-data,而不是application/x-www-form-urlencoded。这是由于您传递给CURLOPT_POSTFIELDS选项的$formData变量的类型。来自manual 的引用:如果(CURLOPT_POSTFIELDS 的)值是一个数组,则 Content-Type 标头将设置为 multipart/form-data。
标签: javascript php curl