On Fri, Oct 31, 2008 at 1:21 PM, Ciancetta, Jesse E. <[EMAIL PROTECTED]>wrote:

> I don't think you need to send a request parameter with the data -- Partuza
> does.  That's what it does right now.  I could see that there was a
> mismatch, but I wasn't sure who had it right (Partuza or Shindig).  In the
> fetch_gadget_metadata function in the applications.php file, Partuza sets
> the JSON into the POST body like this:
>
>        curl_setopt($ch, CURLOPT_POSTFIELDS, 'request=' .
> urlencode($request));
>
> I'll update my local copy of the Partuza code to send text/json instead of
> x-form/www-urlencoded so it works properly with Java Shindig, and I'll send
> a message to the Partuza developers list asking them to do the same
> (although I suspect that the PHP version of the RpcServlet is built to
> expect x-form/www-urlencoded, so they'll probably have to change that too).
>
> But this brings me back to my original question -- in order to be able to
> swap out PHP Shindig for Java Shindig, they obviously need to handle
> requests for metadata the same way.  I tried to find a specification that
> would tell me how the request is supposed to be made, but all I came up with
> is this:
>
> http://code.google.com/apis/gadgets/docs/spec.html
>
> which doesn't get into enough detail to answer the question.  Is there a
> more detailed specification somewhere that I missed?


There is no specification for this, because the specification only governs
the developer interactions. Developers aren't expected to use the metadata
service.


>
>
> Thanks again,
>
> --Jesse
>
> -----Original Message-----
> From: Kevin Brown [mailto:[EMAIL PROTECTED]
> Sent: Friday, October 31, 2008 3:27 PM
> To: [email protected]
> Subject: Re: Partuza with Java Shindig
>
> On Fri, Oct 31, 2008 at 7:46 AM, Ciancetta, Jesse E. <[EMAIL PROTECTED]
> >wrote:
>
> > Hi,
> >
> > I am trying to run Partuza using the Java Shindig server and have run
> into
> > an issue.  The problem occurs whenever I try to add a new gadget to my
> page
> > -- I end up getting back an error from Shindig saying "Malformed JSON
> > request".  I traced the issue back to the doPost method of the RpcServlet
> > and found two different problems:
> >
> > 1) Since the code in the doPost method is reading the data directly from
> > the input stream of the request, I think it needs to URL decode it before
> it
> > tries to use it.
> >
> > 2) It seems like there is a mismatch between what Partuza is sending and
> > what Shindig is expecting.  Partuza is sending the JSON using name-value
> > pairs, and Shindig seems to expect the JSON to be the only thing the in
> body
> > of the POST body.
>
>
> Yes, Shindig is expecting that you post text/json, not
> x-form/www-urlencoded. They're two very different things. Why do you think
> you need to send a request parameter with this data? I wrote the metadata
> handler and it's always been this way, and it's intentional.
>
>
> >
> >
> > This is an example of what the RpcServlet ends up trying to create a new
> > JSONObject with:
> >
> >
> >
> request=%7B%22context%22%3A%7B%22country%22%3A%22US%22%2C%22language%22%3A%22en%22%2C%22view%22%3A%22default%22%2C%22container%22%3A%22partuza%22%7D%2C%22gadgets%22%3A%5B%7B%22url%22%3A%22http%3A%5C%2F%5C%
> > 2Fwww.labpixies.com
> >
> %5C%2Fcampaigns%5C%2Fmaps%5C%2Fmaps.xml%22%2C%22moduleId%22%3A%221%22%7D%5D%7D
> >
> > which causes the JSONObject constructor to throw an exception.
> >
> > If I replace this code in the doPost method:
> >
> >    ServletInputStream is = request.getInputStream();
> >    byte[] body = IOUtils.toByteArray(is);
> >    if (body.length != length) {
> >      logger.info("Wrong size. Length: " + length + " real: " +
> > body.length);
> >      response.setStatus(HttpServletResponse.SC_BAD_REQUEST);
> >      return;
> >    }
> >
> > with this:
> >
> >    byte[] body = request.getParameter("request").getBytes();
> >
> > everything works fine (since getParameter does the decoding for me, and I
> > end up with just the JSON data).
> >
> > So my question is this -- how do I figure out who's right with regards to
> > how the data should be sent?  Should the data be send as the value of the
> > "request" parameter (like Partuza is doing), or should the JSON be the
> only
> > thing in the POST body (like Shindig seems to expect)?  I tried to find a
> > specification that would give me the answer, but all I came up with is
> this:
> >
> > http://code.google.com/apis/gadgets/docs/spec.html
> >
> > which doesn't get into enough detail to answer the question.
> >
> > Thanks,
> >
> > --Jesse
> >
>

Reply via email to