模拟api调用,就像发生在Flash中一样

时间:2019-02-06 01:11:11

标签: php .net remoting amf

我试图弄清楚如何调用在Shoretel IP电话的远程运行的php函数。

我可以通过浏览器通过简单的IP访问它,它是Flash Player脚本,但是我想以编程方式做一些事情,但找不到任何帮助。

Flash Player应用正在调用以下api https:///gateway.php?PHPSESSID = 6432fc5f0999d0f4536fced79b95

在此负载中,它正在调用LSRoom_Remoting.getHeaderInfo之类的php函数

我正在尝试但收到诸如“格式错误的AMF消息”之类的错误消息

这是代码

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 :(得分:0)

if(term <= 12){ if(DayLate <= 14) then NEW_STATUS = "NORM" if(DayLate between 15~30) then NEW_STATUS = "SPECIAL" }else if(term > 12){ if(DayLate <= 29) then NEW_STATUS = "NORM" if(DayLate between 30~89) then NEW_STATUS = "SPECIAL" } 很可能过期了,而没有使用最近请求中的一个;因为默认超时是15分钟。如果消息尚未过期,您仍然必须构建适当的PHPSESSID消息,该消息由标头和正文组成。有一个用于该库的库:amfphp,尽管它是用AMF编写的,但至少应该提供一些提示,使其看起来相似。