Wayback Machinekoobas.hobune.stream
May JUN Jul
Previous capture 13 Next capture
2021 2022 2023
1 capture
13 Jun 22 - 13 Jun 22
sparklines
Close Help
  • Products
  • Solutions
  • Made with Unity
  • Learning
  • Support & Services
  • Community
  • Asset Store
  • Get Unity

UNITY ACCOUNT

You need a Unity Account to shop in the Online and Asset Stores, participate in the Unity Community and manage your license portfolio. Login Create account
  • Blog
  • Forums
  • Answers
  • Evangelists
  • User Groups
  • Beta Program
  • Advisory Panel

Navigation

  • Home
  • Products
  • Solutions
  • Made with Unity
  • Learning
  • Support & Services
  • Community
    • Blog
    • Forums
    • Answers
    • Evangelists
    • User Groups
    • Beta Program
    • Advisory Panel

Unity account

You need a Unity Account to shop in the Online and Asset Stores, participate in the Unity Community and manage your license portfolio. Login Create account

Language

  • Chinese
  • Spanish
  • Japanese
  • Korean
  • Portuguese
  • Ask a question
  • Spaces
    • Default
    • Help Room
    • META
    • Moderators
    • Topics
    • Questions
    • Users
    • Badges
  • Home /
avatar image
0
Question by redshirt07 · Jun 13, 2012 at 10:24 PM · networkingserializationwwwform

Sending binary data causes unexpected problems on server.

Hi,

I am currently developing a Unity based game for mobile platforms which communicates with a Java Applet running on AppEngine to save the game state. I am currently in the process of switching from formatting an object's fields into form fields and then transmitting this form to the server with the goal of persisting my data to directly parsing my objects as binary data using protobuf-net and sending this to the server instead. The thing is that I still want to use form fields to add additional info (such as session cookies) that would get directly serialized as binary data. Therefore, I tried to take my already existing form and adding the serialized object using WWWForm.AddBinaryData The problem is that as soon as I use this method, my server-side login doesn't work anymore. Basically, it seems like it wrecks the data transmission process/disturbs the form integrity somehow. Here's a code sample showing how I send the data:

 public IEnumerator AddNewBuilding(OnNetResult callback, GeneralBuildingScript newBuilding)
 {

     if( Game.Instance.GetUser() == "" || !Game.Instance.SessionCookieIsSet )
         callback(ReturnCode.Error, "Not connected !");
     
     // Login info, I still want this as form fields
     WWWForm form = new WWWForm();
     form.AddField("nm", Game.Instance.GetUser() );
     form.AddField("cookie", Game.Instance.GetSessionCookie() );        
     form.AddField("action","testAdd");
     form.AddField("manager","Buildings");

         // Old parameters, are now contained in the serialized object
     form.AddField("posX",newBuilding.Coordinates[0].ToString());
     form.AddField("posY",newBuilding.Coordinates[2].ToString());
     form.AddField("angle",newBuilding.RotationAngle.ToString());

         // Serialization of an object using protobuf-net
     using (MemoryStream memStream = new MemoryStream())
 {
     Serializer.Serialize<GeneralBuildingScript>(memStream, newBuilding);
         byte[] dataBuffer = memStream.GetBuffer();
         form.AddBinaryData("binaryData", dataBuffer ) ;        
 
     
     WWW www = new WWW(Game.ServerUrl, form);
     yield return www;

     tryConnection("Error", www, callback);
 

}

Now, if I am not mistaken, combining binary data and normal form fields isn't supposed to cause any problems ( like in this example ). Is there something I am missing ? do I have to switch to the other, "form-less" version of WWW and send the straight binary data ? Did anyone else experiment with protobuf or protobuf-net and Unity ? Any help is welcome.

Comment
Add comment · Show 1
10 |3000 characters needed characters left characters exceeded
▼
  • Viewable by all users
  • Viewable by moderators
  • Viewable by moderators and the original poster
  • Advanced visibility
Viewable by all users
avatar image pfialho · Apr 16, 2013 at 09:23 AM 0
Share

same problem here. my servlet request parameters become empty when there's mixing AddField and AddBinaryData on the Unity client. any updates on this?

1 Reply

· Add your reply
  • Sort: 
avatar image
0

Answer by pfialho · Apr 16, 2013 at 10:28 AM

it is probably because your server doesn't support multipart requests. see http://stackoverflow.com/questions/3337056/convenient-way-to-parse-incoming-multipart-form-data-parameters-in-a-servlet

Comment
Add comment · Share
10 |3000 characters needed characters left characters exceeded
▼
  • Viewable by all users
  • Viewable by moderators
  • Viewable by moderators and the original poster
  • Advanced visibility
Viewable by all users

Your answer

Hint: You can notify a user about this post by typing @username

Up to 2 attachments (including images) can be used with a maximum of 524.3 kB each and 1.0 MB total.

Follow this Question

Answers Answers and Comments

4 People are following this question.

avatar image avatar image avatar image avatar image

Related Questions

EndOfStreamException: Failed to read past end of stream. 0 Answers

Best way to serialize a ScriptableObject reference using NetworkWriter/Reader 1 Answer

How to serialize an object to a byte array 1 Answer

Photon (PUN) Type Serialization Error on RPC 2 Answers

WWWForm speed different between Android and iOS device 1 Answer


Enterprise
Social Q&A

Social
Subscribe on YouTube social-youtube Follow on LinkedIn social-linkedin Follow on Twitter social-twitter Follow on Facebook social-facebook Follow on Instagram social-instagram

Footer

  • Purchase
    • Products
    • Subscription
    • Asset Store
    • Unity Gear
    • Resellers
  • Education
    • Students
    • Educators
    • Certification
    • Learn
    • Center of Excellence
  • Download
    • Unity
    • Beta Program
  • Unity Labs
    • Labs
    • Publications
  • Resources
    • Learn platform
    • Community
    • Documentation
    • Unity QA
    • FAQ
    • Services Status
    • Connect
  • About Unity
    • About Us
    • Blog
    • Events
    • Careers
    • Contact
    • Press
    • Partners
    • Affiliates
    • Security
Copyright © 2020 Unity Technologies
  • Legal
  • Privacy Policy
  • Cookies
  • Do Not Sell My Personal Information
  • Cookies Settings
"Unity", Unity logos, and other Unity trademarks are trademarks or registered trademarks of Unity Technologies or its affiliates in the U.S. and elsewhere (more info here). Other names or brands are trademarks of their respective owners.
  • Anonymous
  • Sign in
  • Create
  • Ask a question
  • Spaces
  • Default
  • Help Room
  • META
  • Moderators
  • Explore
  • Topics
  • Questions
  • Users
  • Badges