【问题标题】:CURL: Variables not getting sentCURL:变量未发送
【发布时间】: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


【解决方案1】:

说出你得到什么样的回应可能会很有用。

另外,您在设置之前使用 $var,即

$formData = array('code'=>$var); $var = '这里有东西';

它是在您的代码中的其他地方设置的还是错字?

【讨论】:

  • 谢谢。它确实有效..但我现在有另一个问题。我使用 json_decode 函数将输出的 json 数据(如字符串)转换为 json 对象。为了测试它,我回显了解码的对象,它只是输出为“数组”而不显示实际数组。当我在不解码的情况下回显时,它完美地显示了 json 数据。
  • 是的,当你回显一个数组时会发生这种情况。要查看其中的内容,请改用 var_dump()。您可能希望使用 json_decode($var, true) 将您的响应作为关联数组。
猜你喜欢
  • 2018-02-16
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-07-23
  • 2016-08-25
  • 1970-01-01
  • 2015-09-30
  • 1970-01-01
相关资源
最近更新 更多