Hi Carlos,

I added the optional compiler parameters:

-js-default-initializers=true
-js-dynamic-access-unknown-members=true

But am still having the warning in console:
getStaticConstantsByConvention.js:52 [WARNING] getStaticConstantsByConvention :: the reflection target mx.rpc.http.mxml.HTTPService was not Compiled with default initializers enabled

And also my POST param is still blank on server request...
When using same request but in flex3 (by the way I am re-writing the client side of an existing application developed with flex and actionscript - with apache royale) and I would like to re-use the existing server functions (which is in PHP) - when the same request is called from old flex application - the POST params are present... But when called using HTTPService from apache royale - it is blank :(

Do you have an example using HTTPService with POST parameters that work ?

Thanks & Regards
Joanne



On Fri, 24 Jul 2020 10:20:28 +0200
 Carlos Rovira <[email protected]> wrote:
Hi Joanne,

"getStaticConstantsByConvention" problem use to be solved using the optional compilation parameter: *-js-default-initializers=true*

(See this link:
https://apache.github.io/royale-docs/create-an-application/optimizations/compiler-configuration-settings.html#default-initializers
)

In Royale by default the variables are not initialized unlike in Flash /
Flex.
Crux needs for some things that these variables are initialized.

Also maybe you need to add -js-dynamic-access-unknown-members=true
(
https://apache.github.io/royale-docs/create-an-application/optimizations/compiler-configuration-settings.html#dynamic-access-unknown-members
)
in case you are adding dynamic properties to plain objects

HTH

Carlos

El vie., 24 jul. 2020 a las 10:05, Joanne Seneque (<[email protected]>)
escribió:

Hi Carlos,
Thanks for the reply, I added traces to the code (client + server side) and was able to debug up to the point where the message is constructed & sent to server (in mx.rpc.http.AbstractOperation.prototype.sendBody )
----
message.contentType = "application/x-www-form-urlencoded"
message.method = "POST"
message.body = {loginMode: "1", pwd: "jbggAFxcXFx7", scope:
"jbggAFdXV1fSpQ9e", username: "jbggAFhYWFgPvC96U1U="}
message.httpHeaders = {}
----
We can see that the "body" contains the object to be sent to the PHP
service / request call...
But in my PHP log:

2020-07-24 11:45:04 +04:00 --- info: request method: POST
2020-07-24 11:45:04 +04:00 --- info: php input:
2020-07-24 11:45:04 +04:00 --- info: user:
2020-07-24 11:45:04 +04:00 --- info: pwd:
2020-07-24 11:45:04 +04:00 --- info: scope:
2020-07-24 11:45:05 +04:00 --- error: Login - Scope is not valid. 2020-07-24 11:45:05 +04:00 --- error: Login - Blank user or password given
---------------------------

One thing I saw in the browser console is the following warning: [WARNING] getStaticConstantsByConvention :: the reflection target mx.rpc.http.mxml.HTTPService was not Compiled with default initializers
enabled
org.apache.royale.reflection.utils.getStaticConstantsByConvention @
getStaticConstantsByConvention.js:52
org.apache.royale.crux.reflection.TypeDescriptor.fromTypeDefinition @
TypeDescriptor.js:194
org.apache.royale.crux.reflection.TypeCache.getTypeDescriptor @
TypeCache.js:64
org.apache.royale.crux.BeanFactory.constructBean @ BeanFactory.js:577 org.apache.royale.crux.BeanProvider.initializeBeans @ BeanProvider.js:79 org.apache.royale.crux.BeanProvider.initialize @ BeanProvider.js:65 org.apache.royale.crux.Crux.constructProviders @ Crux.js:169
org.apache.royale.crux.Crux.init @ Crux.js:145
org.apache.royale.crux.Crux.set__strand @ Crux.js:233
org.apache.royale.core.ElementWrapper.addBead @ ElementWrapper.js:120
org.apache.royale.core.HTMLElementWrapper.addBead @
HTMLElementWrapper.js:50
org.apache.royale.jewel.Application.start @ Application.js:260
(anonymous) @ (index):560

Could this be linked to my issue (i.e. POST content is blank on PHP
server) ?

Thanks & Regards
Joanne



On 2020/07/23 07:45:44, Carlos Rovira <[email protected]> wrote:
> Hi Joanne,
>
> Here's a working example that uses mx:HTTPService with Crux [1], very
> similar to your code.
>
> can't see any issue in your code. Just ensure the service is responding > correctly and put some traces in the classes to detect the point where it
> is failing.
>
> [1]
>
https://github.com/codeoscopic/avant2-website/blob/master/avant2-products-companies/src/main/royale/com/codeoscopic/avant/config/Beans.mxml
>
> El jue., 23 jul. 2020 a las 8:48, SENEQUE CRAIG THIERRY (<
> [email protected]>) escribió:
>
> > Hi, I am using an HTTPService to make a POST request to a
> > PHP server - the issue I am having is that the POST
> > data/params is not retrieved on the server...
> > Below is my code in delegate file (I followed examples
> > using 'crux'):
> >
> > Beans.mxml
> >
> > <crux:BeanProvider
> >         xmlns:fx="http://ns.adobe.com/mxml/2009";
> > xmlns:crux="library://ns.apache.org/royale/crux"
> >         xmlns:mx="library://ns.apache.org/royale/mx"
> >         xmlns:model="model.*"
> >         xmlns:service="service.*"
> >         xmlns:controller="controller.*">
> >
> >         <!-- services config -->
> > <mx:HTTPService id="loginService" showBusyCursor="true"/>
> >
> > LoginDelegate.as
> > package service
> > {
> > import org.apache.royale.events.IEventDispatcher;
> >         import mx.rpc.AsyncToken;
> >         import mx.rpc.http.HTTPService;
> >
> >         /**
> >          * @royalesupresspublicvarwarning
> >          */
> >         public class LoginDelegate
> >         {
> >
> >                 [Dispatcher]
> > public var dispatcher:IEventDispatcher;
> >
> >                 [Inject('loginService')]
> >                 public var loginService:HTTPService;
> >
> >                 public function LoginDelegate() {
> >                 }
> >
> > public function login(loginURL:String,
> > params:Object):AsyncToken {
> > loginService.method = "POST"; > > loginService.url = loginURL + 'login_web'; //
> > "login_URL" is for e.g. http://localhost/mySite/
> >
> >
> > return loginService.send(params); // "params"
is
> > an
> > object as {user: xxx:, pwd: 123}
> >                 }
> >         }
> > }
> >
> > ------------
> >
> > On my PHP server both the "$_POST" and
> > "file_get_contents('php://input')" returns blank...
> >
> > Did I miss something on the HTTPService ? Or is there
> > another way to pass data through POST request ?
> >
> >
> > Thanks & Regards
> >
> > Joanne
> >
>
>
> --
> Carlos Rovira
> http://about.me/carlosrovira
>



--
Carlos Rovira
http://about.me/carlosrovira

Reply via email to