Example #1
0
        public void Call<T>(string command, Responder<T> responder, params object[] arguments)
        {
            try
            {
                TypeHelper._Init();

                Uri uri = new Uri(_gatewayUrl);
                HttpWebRequest request = (HttpWebRequest)WebRequest.Create(uri);
                request.ContentType = ContentType.AMF;
                request.Method = "POST";
            #if !(SILVERLIGHT)
                request.CookieContainer = _netConnection.CookieContainer;
            #endif
                AMFMessage amfMessage = new AMFMessage((ushort)_netConnection.ObjectEncoding);
                AMFBody amfBody = new AMFBody(command, responder.GetHashCode().ToString(), arguments);
                amfMessage.AddBody(amfBody);
                foreach (KeyValuePair<string, AMFHeader> entry in _netConnection.Headers)
                {
                    amfMessage.AddHeader(entry.Value);
                }
                AmfRequestData amfRequestData = new AmfRequestData(request, amfMessage, null, null, responder);
                request.BeginGetRequestStream(BeginRequestFlashCall, amfRequestData);
            }
            catch (Exception ex)
            {
                _netConnection.RaiseNetStatus(ex);
            }
        }
Example #2
0
 public void Call(string command, IPendingServiceCallback callback, params object[] arguments)
 {
     try
     {
         TypeHelper._Init();
         Uri            requestUri = new Uri(this._gatewayUrl);
         HttpWebRequest request    = (HttpWebRequest)WebRequest.Create(requestUri);
         request.ContentType     = "application/x-amf";
         request.Method          = "POST";
         request.CookieContainer = this._netConnection.CookieContainer;
         AMFMessage amfMessage = new AMFMessage((ushort)this._netConnection.ObjectEncoding);
         AMFBody    body       = new AMFBody(command, callback.GetHashCode().ToString(), arguments);
         amfMessage.AddBody(body);
         foreach (KeyValuePair <string, AMFHeader> pair in this._netConnection.Headers)
         {
             amfMessage.AddHeader(pair.Value);
         }
         PendingCall call  = new PendingCall(command, arguments);
         RequestData state = new RequestData(request, amfMessage, call, callback);
         request.BeginGetRequestStream(new AsyncCallback(this.BeginRequestFlashCall), state);
     }
     catch (Exception exception)
     {
         this._netConnection.RaiseNetStatus(exception);
     }
 }
Example #3
0
        private async void sendBtn_Click(object sender, EventArgs e)
        {
            object[]   arguments = { Convert.ToInt32(textBox1.Text) };
            AMFMessage _amf      = new AMFMessage(3);

            _amf.AddHeader(new AMFHeader("id", false, Hash.createChecksum(arguments)));
            _amf.AddHeader(new AMFHeader("needClassName", false, true));
            _amf.AddBody(new AMFBody("MovieStarPlanet.WebService.UserSession.AMFUserSessionService.GetActorNameFromId", "/1", arguments));
            MemoryStream  mStream   = new MemoryStream();
            AMFSerializer serialize = new AMFSerializer(mStream);

            serialize.WriteMessage(_amf);
            HttpClient client = new HttpClient();

            byte[] AMFBytes = Encoding.Default.GetBytes(Encoding.Default.GetString(mStream.ToArray()));

            ///Set referer to send AMF without 404 error
            Uri referer = new Uri("https://assets.mspcdns.com/msp/91.0.2/Main_20200728_110605.swf");

            client.DefaultRequestHeaders.Referrer = referer;

            try
            {
                string gateway = "https://ws-" + comboBox1.Text + ".mspapis.com/msp/91.0.6/Gateway.aspx?method=MovieStarPlanet.WebService.UserSession.AMFUserSessionService.GetActorNameFromId";
                var    AMFHttpClientByteArray = new ByteArrayContent(AMFBytes);
                AMFHttpClientByteArray.Headers.ContentType = new MediaTypeHeaderValue("application/x-amf");

                var response = await client.PostAsync(gateway, AMFHttpClientByteArray);

                //Response
                string responseString = response.Content.ReadAsStringAsync().Result;
                string final          = JsonConvert.SerializeObject(responseString);
                MessageBox.Show(final);
            }

            catch (WebException exception)
            {
                MessageBox.Show("Error!" + exception);
            }
        }
Example #4
0
 public void Call(string endpoint, string destination, string source, string operation, IPendingServiceCallback callback, params object[] arguments)
 {
     if (this._netConnection.ObjectEncoding == ObjectEncoding.AMF0)
     {
         throw new NotSupportedException("AMF0 not supported for Flex RPC");
     }
     try
     {
         TypeHelper._Init();
         Uri            requestUri = new Uri(this._gatewayUrl);
         HttpWebRequest request    = (HttpWebRequest)WebRequest.Create(requestUri);
         request.ContentType     = "application/x-amf";
         request.Method          = "POST";
         request.CookieContainer = this._netConnection.CookieContainer;
         AMFMessage      amfMessage = new AMFMessage((ushort)this._netConnection.ObjectEncoding);
         RemotingMessage message2   = new RemotingMessage {
             clientId    = Guid.NewGuid().ToString("D"),
             destination = destination,
             messageId   = Guid.NewGuid().ToString("D"),
             timestamp   = 0L,
             timeToLive  = 0L
         };
         message2.SetHeader("DSEndpoint", endpoint);
         if (this._netConnection.ClientId == null)
         {
             message2.SetHeader("DSId", "nil");
         }
         else
         {
             message2.SetHeader("DSId", this._netConnection.ClientId);
         }
         message2.source    = source;
         message2.operation = operation;
         message2.body      = arguments;
         foreach (KeyValuePair <string, AMFHeader> pair in this._netConnection.Headers)
         {
             amfMessage.AddHeader(pair.Value);
         }
         AMFBody body = new AMFBody(null, null, new object[] { message2 });
         amfMessage.AddBody(body);
         PendingCall call  = new PendingCall(source, operation, arguments);
         RequestData state = new RequestData(request, amfMessage, call, callback);
         request.BeginGetRequestStream(new AsyncCallback(this.BeginRequestFlexCall), state);
     }
     catch (Exception exception)
     {
         this._netConnection.RaiseNetStatus(exception);
     }
 }
Example #5
0
        public void Call(string endpoint, string destination, string source, string operation, IPendingServiceCallback callback, params object[] arguments)
        {
            if (_netConnection.ObjectEncoding == ObjectEncoding.AMF0)
            {
                throw new NotSupportedException("AMF0 not supported for Flex RPC");
            }
            try
            {
                TypeHelper._Init();

                Uri            uri     = new Uri(_gatewayUrl);
                HttpWebRequest request = (HttpWebRequest)WebRequest.Create(uri);
                request.ContentType = ContentType.AMF;
                request.Method      = "POST";
#if !(SILVERLIGHT)
                request.CookieContainer = _netConnection.CookieContainer;
#endif
                AMFMessage amfMessage = new AMFMessage((ushort)_netConnection.ObjectEncoding);

                RemotingMessage remotingMessage = new RemotingMessage();
                remotingMessage.clientId    = Guid.NewGuid().ToString("D");
                remotingMessage.destination = destination;
                remotingMessage.messageId   = Guid.NewGuid().ToString("D");
                remotingMessage.timestamp   = 0;
                remotingMessage.timeToLive  = 0;
                remotingMessage.SetHeader(MessageBase.EndpointHeader, endpoint);
                remotingMessage.SetHeader(MessageBase.FlexClientIdHeader, _netConnection.ClientId ?? "nil");
                //Service stuff
                remotingMessage.source    = source;
                remotingMessage.operation = operation;
                remotingMessage.body      = arguments;

                foreach (KeyValuePair <string, AMFHeader> entry in _netConnection.Headers)
                {
                    amfMessage.AddHeader(entry.Value);
                }
                AMFBody amfBody = new AMFBody(null, null, new object[] { remotingMessage });
                amfMessage.AddBody(amfBody);

                PendingCall    call           = new PendingCall(source, operation, arguments);
                AmfRequestData amfRequestData = new AmfRequestData(request, amfMessage, call, callback, null);
                request.BeginGetRequestStream(BeginRequestFlexCall, amfRequestData);
            }
            catch (Exception ex)
            {
                _netConnection.RaiseNetStatus(ex);
            }
        }
Example #6
0
 /// <summary>
 /// This method supports the Fluorine infrastructure and is not intended to be used directly from your code.
 /// </summary>
 /// <returns></returns>
 public AMFMessage ReadAMFMessage()
 {
     // Version stored in the first two bytes.
     var version = ReadUInt16();
     var message = new AMFMessage(version);
     // Read header count.
     int headerCount = ReadUInt16();
     for (var i = 0; i < headerCount; i++) {
         message.AddHeader(ReadHeader());
     }
     // Read header count.
     int bodyCount = ReadUInt16();
     for (var i = 0; i < bodyCount; i++) {
         var amfBody = ReadBody();
         if (amfBody != null) //not failed
             message.AddBody(amfBody);
     }
     return message;
 }