php: для публикации на URL нужна аутентификация - PullRequest
1 голос
/ 11 сентября 2010

Мне нужно сделать сообщение на URL, который должен быть сначала аутентифицирован , в C # я могу сделать это

    HttpWebRequest myRequest = (HttpWebRequest)WebRequest.Create(url);
    myRequest.Method = "POST";
    myRequest.ContentType = "application/x-www-form-urlencoded";
    myRequest.Credentials = new NetworkCredential(username, password);
    myRequest.PreAuthenticate = true;

    Stream newStream = myRequest.GetRequestStream();
    newStream.Close();

    // Get response
    try
    {
        HttpWebResponse response = (HttpWebResponse)myRequest.GetResponse();
        return response.StatusDescription;

        // some other code 
    }
    catch (Exception ex)
    {
        return ex.Message;
    }

как это сделать в php?

Ответы [ 2 ]

1 голос
/ 11 сентября 2010

Пример использования cURL:

<?php
$url = "http://example.com/";
$username = 'user';
$password = 'pass';
// create a new cURL resource
$myRequest = curl_init($url);

// do a POST request, using application/x-www-form-urlencoded type
curl_setopt($myRequest, CURLOPT_POST, TRUE);
// credentials
curl_setopt($myRequest, CURLOPT_USERPWD, "$username:$password");
// returns the response instead of displaying it
curl_setopt($myRequest, CURLOPT_RETURNTRANSFER, 1);

// do request, the response text is available in $response
$response = curl_exec($myRequest);
// status code, for example, 200
$statusCode = curl_getinfo($myRequest, CURLINFO_HTTP_CODE);

// close cURL resource, and free up system resources
curl_close($myRequest);
?>
1 голос
/ 11 сентября 2010

Глядя на «связанные» вопросы справа, я получил Выпуск FORM POST-запроса от PHP с использованием базовой аутентификации HTTP , чей принятый ответ, кажется, тот, который вы хотите.

Другой способ, с использованием большего количества методов, был бы с stream_create_context(), как показано в руководстве: http://www.php.net/manual/en/function.stream-context-create.php#91775

В любом случае вы выписываете фактический POST для отправки на сервер,затем открыть соединение с этим сервером и записать POST на него.Я не уверен, есть ли какая-нибудь хорошая обертка вокруг этого, но вы всегда можете создать свой собственный:)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...