симулировать вызов API, как это произошло во вспышке - PullRequest
0 голосов
/ 06 февраля 2019

Я пытаюсь выяснить, как я могу вызвать функции php, работающие на удаленном IP-телефоне coasttel.

Я могу получить к нему доступ через браузер по простому IP, и это скрипт flash player, но я хочу сделать нескольковсе программно, и я не нахожу никакой помощи, чтобы сделать то же самое.

Приложение флеш-плеера вызывает следующий api https: ///gateway.php? PHPSESSID = 6432fc5f0999d0f4536fced79b95

и в полезной нагрузкеэто вызывает функцию php, например, LSRoom_Remoting.getHeaderInfo

Я пытаюсь, но получаю сообщение об ошибке "Malformed AMF message"

Вот код

static void Main(string[] args)
    {
        ServicePointManager.ServerCertificateValidationCallback += (o, c, ch, er) => true;
        var content = new StringContent("LSRoom_Remoting.getBoardID", Encoding.UTF8, "application/x-amf");
        using (var client = new HttpClient())
        {
            client.DefaultRequestHeaders.Clear();
            client.DefaultRequestHeaders.Add("Accept","*/*");
            client.DefaultRequestHeaders.Add("Accept-Encoding", "gzip, deflate, br");
            client.DefaultRequestHeaders.Add("Accept-Language", "en-US,en;q=0.9");
            client.DefaultRequestHeaders.Add("Connection", "keep-alive");
            //client.DefaultRequestHeaders.Add("Content-Length", "47");
            //client.DefaultRequestHeaders.Add("Content-Type", "application/x-amf");
            client.DefaultRequestHeaders.Add("Cookie", "PHPSESSID=3cbc7ff268e80e78e1458a4adfdd1f56");
            client.DefaultRequestHeaders.Add("DNT", "1");
            client.DefaultRequestHeaders.Add("Host", "10.6.32.21");
            client.DefaultRequestHeaders.Add("Referer", "https://10.6.32.21/interface/ls_interface.swf");
            client.DefaultRequestHeaders.Add("Origin", "https://10.6.32.21");
            client.DefaultRequestHeaders.Add("X-Requested-With", "ShockwaveFlash/32.0.0.114");
            client.DefaultRequestHeaders.Add("User-Agent", "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/71.0.3578.98 Safari/537.36");
            var result = client.PostAsync(string.Format("https://10.6.32.21/gateway.php?PHPSESSID={0}", "3cbc7ff268e80e78e1458a4adfdd1f56"), content).Result;
            //var result = client.DownloadString("https://10.6.32.21/interface/interface.php?uniqueKey=152322314997139&brand=shoretel&key=");
            var obj = result.Content.ReadAsStringAsync();
            Console.WriteLine(result.Content.ToString());
            Console.ReadKey();
        }
    }

Что яя делаю не так?

1 Ответ

0 голосов
/ 06 февраля 2019

представляется вероятным, что срок действия PHPSESSID истек, но он не использовался в недавнем запросе;потому что время ожидания по умолчанию составляет 15 минут.в случае, если срок его действия еще не истек, вам все равно нужно создать правильное сообщение AMF, состоящее из заголовка и тела.для этого есть библиотека: amfphp , которая, по крайней мере, должна дать некоторое представление о том, как она должна выглядеть, несмотря на то, что написано в PHP.

...