PHP эквивалент этого .net / C # кода в асинхронном HttpWebRequest, пользовательские заголовки двоичной полезной нагрузки и анализ ответов - PullRequest
2 голосов
/ 03 октября 2010

Я ищу PHP-эквивалент приведенного ниже кода, даже если это не компилируемый код, и было бы просто здорово предоставить функции высокого уровня для использования каждой из этих функций.


        string subscriptionUri = "sample.com";
        HttpWebRequest sendNotificationRequest = (HttpWebRequest)WebRequest.Create(subscriptionUri);
        sendNotificationRequest.Method = "POST";

        sendNotificationRequest.Headers.Add("X-MessageID", "<UUID>");
        sendNotificationRequest.ContentType = "text/xml";


        sendNotificationRequest.ContentLength = notificationMessage.Length;
        byte[] notificationMessage = new byte[] {<payload>};

        using (Stream requestStream = sendNotificationRequest.GetRequestStream())
        {
           requestStream.Write(notificationMessage, 0, notificationMessage.Length);
        }

        // Sends the notification and gets the response.
        HttpWebResponse response = (HttpWebResponse)sendNotificationRequest.GetResponse();
        string notificationStatus = response.Headers["X-NotificationStatus"];
        string notificationChannelStatus = response.Headers["X-SubscriptionStatus"];
        string deviceConnectionStatus = response.Headers["X-DeviceConnectionStatus"];  

Поэтому в основном я ищу PHP-эквивалент следующего

  1. Отправить асинхронный запрос с некоторыми пользовательскими заголовками и типом контента и отправить его асинхронно/ stream
  2. создать полезную нагрузку в байтах из строки
  3. , получить ответ и посмотреть заголовки.

Ответы [ 2 ]

0 голосов
/ 03 октября 2010

Здесь есть какая-то функция, я думаю, она ответит на ваш вопрос CURL: http://php.net/manual/en/book.curl.php
FSOCKOPEN: http://php.net/manual/en/function.fsockopen.php
file_get_contents: http://php.net/manual/en/function.file-get-contents.php
получить заголовок: http://php.net/manual/en/function.get-headers.php

0 голосов
/ 03 октября 2010

Способ сделать это - использовать curl http://php.net/manual/en/book.curl.php с настройками:

  • CURLOPT_WRITEFUNCTION
  • CURLOPT_HEADERFUNCTION

Я думаю, что они позволяют асинхронную связь с помощью функции обратного вызова. не уверен на 100%.

http://www.php.net/manual/en/function.curl-setopt.php

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