0

file_get_contents() 次のコードを実行すると、PHP 関数を使用して McMyAdmin に接続しようとしています。

<?php
$url = 'http://mc.mywebsite.com/data.json?req=status';
$username = 'myuser';
$password = 'mypass';

$context = stream_context_create(array(
    'http' => array( 
      'method'  => 'POST', 
      'header'  => sprintf("Authorization: Basic %s\r\n", base64_encode($username.':'.$password)). 
                   "Content-type: application/x-www-form-urlencoded\r\n", 
      'timeout' => 3, 
    )
));
$data = file_get_contents($url, false, $context);
echo $data;
?>

401 エラーが発生し続けます。私が読んだことから、これは認証を通過するはずです。私は何か間違ったことをしていますか?

4

1 に答える 1

1

代わりに CURL を使用します。

<?php
    $Protocol = "http";
    $Server = "localhost:8080";
    $Username = "admin";
    $Password = "admin";

    //$Username:$Password@
    $fullURL = "$Protocol://$Server/data.json?" . $_SERVER['QUERY_STRING'];

    $curl_handle = curl_init();

    curl_setopt($curl_handle, CURLOPT_URL, $fullURL);
    curl_setopt($curl_handle, CURLOPT_CONNECTTIMEOUT, 2);
    curl_setopt($curl_handle, CURLOPT_RETURNTRANSFER, 1);
    curl_setopt($curl_handle, CURLOPT_USERPWD, "$Username:$Password");
    curl_setopt($curl_handle, CURLOPT_RETURNTRANSFER, TRUE);
    curl_setopt($curl_handle, CURLOPT_HTTPHEADER, array ("Accept: application/json"));

    $buffer = curl_exec($curl_handle);

    if ( $error = curl_error($curl_handle) ) 
    echo 'ERROR: ',"$error";

    curl_close($curl_handle);

    $Response = $buffer;

    header('Content-Type: application/json');
    echo $Response;
?>

「Accept: application/json」ヘッダーがない場合、McMyAdmin 2 は API リクエストを拒否することに注意してください。

于 2012-02-06T02:07:02.393 に答える