Javascript access to RO server?

(infokevercom) #1 (1.7 MB)
I have created a simple testserver. Calling the Sum() method is working OK, however when I cal a method that returns a struct, the call fails:

        var Channel = new RemObjects.SDK.HTTPClientChannel("http://localhost:5274/handler.ashx/binmessage");
        var Message = new RemObjects.SDK.BinMessage();
        Message.UseCompression = false;
        var Service = new SampleService(Channel, Message);

            function (result) {
            function (msg) {
        alert('Call completed');

This code first shows ‘Call completed’, then ‘Error’ and then an empty message (msg.getErrorMessage() is empty). I tried both BinMessage and JsonMessage.

Server sample (C#. ASP.NET):
Client sample:

Fiddler shows (see Image) that the server correctly sends a response to the client.
Cross origin headers are handled inside Web.config.

What could be the problem? Thanks for any support you can give…
Kees Vermeulen

(antonk) #2


Thanks for the testcase. Actually it works perfectly after one minor bug is fixed in the code.

Your client app’s Scripts contain files WebApplication1\Scripts\SampleLibrary_intf.js and WebApplication1\Scripts\ADatoServiceLibrary_intf.js

Both these files define a structure named User

__namespace.User.prototype = new RemObjects.SDK.ROStructType();
__namespace.User.prototype.constructor = __namespace.User;
RemObjects.SDK.RTTI["User"] = __namespace.User;

When a server sends back a structure named User the client tries to read it from the stream. However server sends similar structure defined in the SampleLibrary_intf.js file while clients tries to deserialize it as a much more complex structure defined in ADatoServiceLibrary_intf.js. This results in the error you see.

To get the sample working I just removed the file WebApplication1\Scripts\ADatoServiceLibrary_intf.js from the client app sample to resolve the naming conflict.


(infokevercom) #3

Tjee, such a simple solution. Thanks a lot.