POST, DELETE не отправляет ответ через stream_context_create () / fopen () - PullRequest
0 голосов
/ 28 октября 2011

У меня есть следующий код, который я использую для публикации данных по HTTP

        $opts = array (
                'http' => array (
                    'method' => "POST",
                    'header' => $auth ,
                    //  . "Content-Type: " . $content_type . "\r\n"
                    //  . "Content-length: " . strlen($data) . "\r\n",
                    'user_agent' => RESTClient :: USER_AGENT,
                    'content' => $data                      
                )
        );
        $context = stream_context_create($opts);
        $fp = fopen($url, 'r', false, $context);
        $result = "";
        while ($str = fread($fp,1024)) {
            $result .= $str;
        }
        fclose($fp);


     Return $result;

Это сообщение о том, что когда я смотрю в базу данных, введенные данные были введены, однако мой код должен возвращатьсяответ.Ответы работают правильно, когда я использую cURL, но не с помощью этого метода.Я что-то упустил?

1 Ответ

0 голосов
/ 28 октября 2011

За исключением предупреждения / уведомления из-за отсутствия Content-type, этот

<?php
class RESTClient {
    const USER_AGENT='Mozilla';
}
$url = 'http://social.msdn.microsoft.com/Search/en-US/';
$data = 'query=test&ac=3';
$auth = '';

// <-- unaltered code
$opts = array (
    'http' => array (
        'method' => "POST",
        'header' => $auth ,
        //  . "Content-Type: " . $content_type . "\r\n"
        //  . "Content-length: " . strlen($data) . "\r\n",
        'user_agent' => RESTClient :: USER_AGENT,
        'content' => $data
    )
);
$context = stream_context_create($opts);
$fp = fopen($url, 'r', false, $context);
$result = "";
while ($str = fread($fp,1024)) {
    $result .= $str;
}
fclose($fp);
//  unaltered code -->
echo $result;

отлично работает для меня.
Этот фрагмент кода вызывает описанное поведение в системе?


Кстати: вместо fopen / while / fread / fclose вы также можете использовать file_get_contents .

...