Curl返回特定端口上的空白页面

时间:2012-12-04 02:42:26

标签: curl port

我正在努力让curl输出。它是一个基本的文本字符串,可以在该地址输出。

我正在执行此代码并且它无法正常工作但如果我取出27017并加载主域名则可以正常工作:

$cookie_file_path = "cookiejar.txt"; 
$fp = fopen("$cookie_file_path","w");
fclose($fp);
$LOGINURL = "http://www.myserver.org:27017";
$agent = "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.0; .NET CLR 1.1.4322)";
    $ch = curl_init();
    curl_setopt($ch, CURLOPT_URL,$LOGINURL);
    curl_setopt($ch, CURLOPT_USERAGENT, $agent);
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
    curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1);
    curl_setopt($ch, CURLOPT_COOKIEFILE, $cookie_file_path);
    curl_setopt($ch, CURLOPT_COOKIEJAR, $cookie_file_path);
    $result = curl_exec ($ch);
echo $result;

知道它为什么不起作用?任何帮助将不胜感激。不确定它是否相关,但Web服务器与27017端口上输出的应用程序在同一台机器上运行。

更新:

$cookie_file_path = "cookiejar.txt"; 
$username = "myusername";
$password = "mypassword";
$LOGINURL = "http://www.myserver.org";
$agent = "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.0; .NET CLR 1.1.4322)";
    $ch = curl_init();
    curl_setopt($ch, CURLOPT_URL,$LOGINURL);
    curl_setopt($ch, CURLOPT_USERPWD, "$username:$password");
    curl_setopt($ch, CURLOPT_PORT , "27017");
    curl_setopt($ch, CURLOPT_USERAGENT, $agent);
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
    curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1);
    curl_setopt($ch, CURLOPT_COOKIEFILE, $cookie_file_path);
    curl_setopt($ch, CURLOPT_COOKIEJAR, $cookie_file_path);
    $result = curl_exec ($ch);

echo $result;

更新2:

解决。

原来它需要这个特定实例的摘要身份验证。

curl_setopt($ch, CURLOPT_HTTPAUTH, CURLAUTH_DIGEST);

解决了这个问题...

感谢Barmar让我意识到它确实需要用户/通行证。

1 个答案:

答案 0 :(得分:0)

当我点击链接时,我会被要求输入用户名和密码。您需要使用CURLOPT_USERPWD选项提供此信息:

$username = 'XXX';
$password = 'YYY';

curl_setopt($ch, CURLOPT_USERPWD, "$username:$password");

这是我得到的结果:

$ curl -s -D/dev/stdout 'http://www.nationalgaming.org:27017'
HTTP/1.1 401 Unauthorized
Content-Length: 0
WWW-Authenticate: Digest qop="auth", realm="www.nationalgaming.org", nonce="1354591712"

这表示该页面需要登录。