Its tricky in Java land because many servlet engines make the body unavailable for form-encoded data. Given the prevalance of this platform its probably worth a spec change.
On Tue, Mar 10, 2009 at 4:41 AM, Chris Chabot <[email protected]> wrote: > That actually isn't spec compliant, is it? Since the spec states that the > default should always be assumed to be 'json'. > With php-shindig it checks to see if it has a recognizable content-type > header, if not it checks for a recognizable format=foo query param, and > otherwise sets the expected input & output formats to 'json', which means > in > this case everything works as expected. > > No biggy, and i have commit access to the php opensocial client library so > I'll go and update that, however for people who roll their own (or use > different libraries which makes the same assumption) it might be worth it > to > change this behavior in my opinion. > > -- Chris > > On Sun, Mar 8, 2009 at 5:09 PM, Adam Winer <[email protected]> wrote: > > > Your content type is > > > > Content-Type: application/x-www-form-urlencoded > > > > ... which is wrong, it's application/json. With the content type you > > give, the form body gets parsed as query parameters, and isn't > > available as JSON content. > > > > -- Adam Winer > > > > On Sat, Mar 7, 2009 at 11:52 PM, Chirag Shah <[email protected]> > > wrote: > > > I seem to be getting "Could not convert to class java.util.HashMap" > when > > > updating appData when the content-type is > > > "application/x-www-form-urlencoded" on the latest 1.0.x-incubating > build. > > > > > > I was able to track the issue down to line 99 of AppDataHandler where > it > > > internally tries to parse an empty postBody into a JSONObject and dies. > > > Everything works fine if I change the Content-Type to application/json. > > > > > > What is the reccomended content-type when a client updates appData? The > > > opensocial-php-client uses "Content-Type: > > application/x-www-form-urlencoded" > > > when it wants to update appData. > > > > > > > > > Here's a dump of the request to my server (sandbox.orkut.com gives a > > similar > > > response): > > > > > > POST > > > > > > /social/rest/appdata/@viewer/@self/147810927296?oauth_nonce=nonce&oauth_version=1.0&oauth_timestamp=timestamp&oauth_consumer_key=ck&xoauth_requestor_id=guid&oauth_signature_method=HMAC-SHA1&oauth_signature=signature > > > HTTP/1.1^M > > > User-Agent: osapi 1.0^M > > > Host: snip^M > > > Accept: */*^M > > > Content-Length: 23^M > > > *Content-Type: application/x-www-form-urlencoded^M > > > ^M > > > { > > > "osapiFoo1":"newBar1"}* > > > > > > Here is the response: > > > <u>The server encountered an internal error (Unknown error Could not > > > convert to class java.util.HashMap) that prevented it from fulfilling > > this > > > request.</u> > > > > > >

