我有一个使用curl调用api的php代码
$username = 'xxxx';
$password = 'xxxx';
$fields = array(
'field' => urlencode('field_value')
);
$fields_string = '';
foreach($fields as $key=>$value) { $fields_string .= $key.'='.$value.'&'; }
rtrim($fields_string, '&');
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, "http://example.com");
curl_setopt($ch, CURLOPT_USERPWD, $username . ":" . $password);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch,CURLOPT_POST, count($fields));
curl_setopt($ch,CURLOPT_POSTFIELDS, $fields_string);
$output = curl_exec($ch);
curl_close($ch);
print_r($output);
它在我的本地主机上工作,但没有在我的服务器上工作。
这是我对localhost的卷曲信息 localhost_curl
这是我服务器server_curl
的卷曲信息如果我调用没有帖子字段的网址但是如果我用帖子字段调用它就给我一个未找到错误
答案 0 :(得分:0)
正如您已确认curl正在您的服务器上工作,可能会发生请求重定向(对于服务器的地理位置)而您没有在卷曲中处理它。在你的卷曲上加上这个。
curl_setopt($ch,CURLOPT_FOLLOWLOCATION, true);
您可以启用调试模式并查看curl正在做什么。这将有助于您了解有关错误的更多信息(如果有)。
curl_setopt($ch,CURLOPT_VERBOSE, true);
答案 1 :(得分:0)
curl_setopt( $ch, CURLOPT_HTTPAUTH, CURLAUTH_NTLM );
在curl_setopt之前使用此选项($ ch,CURLOPT_USERPWD,$ username。":"。$ password);
并使用curl_error($ ch)函数查看卷曲错误。