<DIV ALIGN="LEFT"><FONT FACE="Verdana" SIZE="2" COLOR="#000000" LETTERSPACING="0" KERNING="0">FYI: the old behavior was basically that setQueryString and setQueryParams were two ways to do the same thing.&nbsp; Only really made sense in the context of HTTP GET requests, but that is the way it worked in LPS v1-3 at least</FONT></DIV><FONT FACE="Verdana" SIZE="2" COLOR="#000000" LETTERSPACING="0" KERNING="0"><br></FONT><DIV ALIGN="LEFT"><FONT FACE="Verdana" SIZE="2" COLOR="#000000" LETTERSPACING="0" KERNING="0">I agree with Tucker that setQueryString should be deprecated -- why have so many ways to do the same thing?&nbsp; let's try to make the future dataset not quite so HTTP-centric if we can.&nbsp; I don't know how many apps would use setQueryString for a POST, but leaving it alone will certainly break the fewest.&nbsp; FWIW, I think it is a common pattern to have all your code working with GET and then change it later to do POST without really thinking about how the params were set.&nbsp; </FONT></DIV><FONT FACE="Verdana" SIZE="2" COLOR="#000000" LETTERSPACING="0" KERNING="0"><br></FONT><DIV ALIGN="LEFT"><FONT FACE="Verdana" SIZE="2" COLOR="#000000" LETTERSPACING="0" KERNING="0">Sarah</FONT></DIV><FONT FACE="Verdana" SIZE="2" COLOR="#000000" LETTERSPACING="0" KERNING="0"><br></FONT><DIV ALIGN="LEFT"><FONT FACE="Verdana" SIZE="2" COLOR="#000000" LETTERSPACING="0" KERNING="0">On Tue, Jan 22, 2008 at 12:41 PM, Henry Minsky wrote:</FONT></DIV><FONT FACE="Verdana" SIZE="2" COLOR="#000000" LETTERSPACING="0" KERNING="0"><br></FONT><DIV ALIGN="LEFT"><FONT FACE="Verdana" SIZE="3" COLOR="#000000" LETTERSPACING="0" KERNING="0">I&nbsp; suppose we should deprecate it eventually, but for now it seems like it would be better to make </FONT></DIV><DIV ALIGN="LEFT"><FONT FACE="Verdana" SIZE="3" COLOR="#000000" LETTERSPACING="0" KERNING="0">it clearly a convenience function for modifying the URL,&nbsp; because it seems worse to make it </FONT></DIV><DIV ALIGN="LEFT"><FONT FACE="Verdana" SIZE="3" COLOR="#000000" LETTERSPACING="0" KERNING="0">side-effect this params key-value table, in a way which is HTTP-specific, and it doesn't even actually </FONT></DIV><DIV ALIGN="LEFT"><FONT FACE="Verdana" SIZE="3" COLOR="#000000" LETTERSPACING="0" KERNING="0">&nbsp;cause that query string to appear in the URL for a POST request, which </FONT></DIV><DIV ALIGN="LEFT"><FONT FACE="Verdana" SIZE="3" COLOR="#000000" LETTERSPACING="0" KERNING="0">I think it what is confusing people. </FONT></DIV><FONT FACE="Verdana" SIZE="3" COLOR="#000000" LETTERSPACING="0" KERNING="0"><br></FONT><FONT FACE="Verdana" SIZE="3" COLOR="#000000" LETTERSPACING="0" KERNING="0"><br></FONT><FONT FACE="Verdana" SIZE="3" COLOR="#000000" LETTERSPACING="0" KERNING="0"><br></FONT><FONT FACE="Verdana" SIZE="3" COLOR="#000000" LETTERSPACING="0" KERNING="0"><br></FONT><FONT FACE="Verdana" SIZE="3" COLOR="#000000" LETTERSPACING="0" KERNING="0"><br></FONT><DIV ALIGN="LEFT"><FONT FACE="Verdana" SIZE="3" COLOR="#000000" LETTERSPACING="0" KERNING="0">On Jan 22, 2008 3:29 PM, P T Withington &lt; <FONT COLOR="#3333FF"><A HREF="mailto:ptw@openlaszlo.org"><U>ptw@openlaszlo.org</U></A></FONT>&gt; wrote: </FONT></DIV><DIV ALIGN="LEFT"><FONT FACE="Verdana" SIZE="3" COLOR="#000000" LETTERSPACING="0" KERNING="0">I'm not sure _what_ the pre-4.x behaviour was.&nbsp; I know it was </FONT></DIV><DIV ALIGN="LEFT"><FONT FACE="Verdana" SIZE="3" COLOR="#000000" LETTERSPACING="0" KERNING="0">confusing and the source of many bugs.&nbsp; I think the best we could tell </FONT></DIV><DIV ALIGN="LEFT"><FONT FACE="Verdana" SIZE="3" COLOR="#000000" LETTERSPACING="0" KERNING="0">was that the intent was that both API's manipulate the same thing, </FONT></DIV><DIV ALIGN="LEFT"><FONT FACE="Verdana" SIZE="3" COLOR="#000000" LETTERSPACING="0" KERNING="0">although the implementation was perfect. </FONT></DIV><FONT FACE="Verdana" SIZE="3" COLOR="#000000" LETTERSPACING="0" KERNING="0"><br></FONT><DIV ALIGN="LEFT"><FONT FACE="Verdana" SIZE="3" COLOR="#000000" LETTERSPACING="0" KERNING="0">I _don't_ think you should make setQueryString touch the URL.&nbsp; If </FONT></DIV><DIV ALIGN="LEFT"><FONT FACE="Verdana" SIZE="3" COLOR="#000000" LETTERSPACING="0" KERNING="0">people want to manipulate the URL they should use the LzURL interface </FONT></DIV><DIV ALIGN="LEFT"><FONT FACE="Verdana" SIZE="3" COLOR="#000000" LETTERSPACING="0" KERNING="0">to do so.&nbsp; The query interface should be for manipulating the query </FONT></DIV><DIV ALIGN="LEFT"><FONT FACE="Verdana" SIZE="3" COLOR="#000000" LETTERSPACING="0" KERNING="0">that the dataset is going to make.&nbsp; It seems klunky to me to have the </FONT></DIV><DIV ALIGN="LEFT"><FONT FACE="Verdana" SIZE="3" COLOR="#000000" LETTERSPACING="0" KERNING="0">setQueryString API, but I don't think you can change its contract. </FONT></DIV><DIV ALIGN="LEFT"><FONT FACE="Verdana" SIZE="3" COLOR="#000000" LETTERSPACING="0" KERNING="0">The most we could do is deprecate it, because it is too implementation- </FONT></DIV><DIV ALIGN="LEFT"><FONT FACE="Verdana" SIZE="3" COLOR="#000000" LETTERSPACING="0" KERNING="0">specific -- it makes it seem like the dataprovider has to be HTTP. </FONT></DIV><FONT FACE="Verdana" SIZE="3" COLOR="#000000" LETTERSPACING="0" KERNING="0"><br></FONT><DIV ALIGN="LEFT"><FONT FACE="Verdana" SIZE="3" COLOR="#000000" LETTERSPACING="0" KERNING="0">On 2008-01-22, at 14:56 EST, Henry Minsky wrote: </FONT></DIV><FONT FACE="Verdana" SIZE="3" COLOR="#000000" LETTERSPACING="0" KERNING="0"><br></FONT><DIV ALIGN="LEFT"><FONT FACE="Verdana" SIZE="3" COLOR="#000000" LETTERSPACING="0" KERNING="0">&gt; One thing I am thinking&nbsp; as I look at the code is that&nbsp; the </FONT></DIV><DIV ALIGN="LEFT"><FONT FACE="Verdana" SIZE="3" COLOR="#000000" LETTERSPACING="0" KERNING="0">&gt; 'setQueryString' </FONT></DIV><DIV ALIGN="LEFT"><FONT FACE="Verdana" SIZE="3" COLOR="#000000" LETTERSPACING="0" KERNING="0">&gt; method is very confusing right now, since it really doesn't directly </FONT></DIV><DIV ALIGN="LEFT"><FONT FACE="Verdana" SIZE="3" COLOR="#000000" LETTERSPACING="0" KERNING="0">&gt; set the </FONT></DIV><DIV ALIGN="LEFT"><FONT FACE="Verdana" SIZE="3" COLOR="#000000" LETTERSPACING="0" KERNING="0">&gt; query string. It is really just acting as a synonym for </FONT></DIV><DIV ALIGN="LEFT"><FONT FACE="Verdana" SIZE="3" COLOR="#000000" LETTERSPACING="0" KERNING="0">&gt; setQueryParam[s], </FONT></DIV><DIV ALIGN="LEFT"><FONT FACE="Verdana" SIZE="3" COLOR="#000000" LETTERSPACING="0" KERNING="0">&gt; which manipulates this 'params' table of key value pairs. </FONT></DIV><DIV ALIGN="LEFT"><FONT FACE="Verdana" SIZE="3" COLOR="#000000" LETTERSPACING="0" KERNING="0">&gt; </FONT></DIV><DIV ALIGN="LEFT"><FONT FACE="Verdana" SIZE="3" COLOR="#000000" LETTERSPACING="0" KERNING="0">&gt; Maybe we should make setQueryString actually overwrite the src URL </FONT></DIV><DIV ALIGN="LEFT"><FONT FACE="Verdana" SIZE="3" COLOR="#000000" LETTERSPACING="0" KERNING="0">&gt; query </FONT></DIV><DIV ALIGN="LEFT"><FONT FACE="Verdana" SIZE="3" COLOR="#000000" LETTERSPACING="0" KERNING="0">&gt; string. I think that would be more along the </FONT></DIV><DIV ALIGN="LEFT"><FONT FACE="Verdana" SIZE="3" COLOR="#000000" LETTERSPACING="0" KERNING="0">&gt; lines of what people expect, and actually fits our existing </FONT></DIV><DIV ALIGN="LEFT"><FONT FACE="Verdana" SIZE="3" COLOR="#000000" LETTERSPACING="0" KERNING="0">&gt; documentation </FONT></DIV><DIV ALIGN="LEFT"><FONT FACE="Verdana" SIZE="3" COLOR="#000000" LETTERSPACING="0" KERNING="0">&gt; more closely. </FONT></DIV><DIV ALIGN="LEFT"><FONT FACE="Verdana" SIZE="3" COLOR="#000000" LETTERSPACING="0" KERNING="0">&gt; </FONT></DIV><DIV ALIGN="LEFT"><FONT FACE="Verdana" SIZE="3" COLOR="#000000" LETTERSPACING="0" KERNING="0">&gt; </FONT></DIV><DIV ALIGN="LEFT"><FONT FACE="Verdana" SIZE="3" COLOR="#000000" LETTERSPACING="0" KERNING="0">&gt; Then setQueryParam[s] would be the only official way </FONT></DIV><DIV ALIGN="LEFT"><FONT FACE="Verdana" SIZE="3" COLOR="#000000" LETTERSPACING="0" KERNING="0">&gt; to manipulate the 'params' table, and the params data will either be </FONT></DIV><DIV ALIGN="LEFT"><FONT FACE="Verdana" SIZE="3" COLOR="#000000" LETTERSPACING="0" KERNING="0">&gt; www-form-encoded as the body of POST requests, or </FONT></DIV><DIV ALIGN="LEFT"><FONT FACE="Verdana" SIZE="3" COLOR="#000000" LETTERSPACING="0" KERNING="0">&gt; merged in with the query string for GET requests. If there are query </FONT></DIV><DIV ALIGN="LEFT"><FONT FACE="Verdana" SIZE="3" COLOR="#000000" LETTERSPACING="0" KERNING="0">&gt; string </FONT></DIV><DIV ALIGN="LEFT"><FONT FACE="Verdana" SIZE="3" COLOR="#000000" LETTERSPACING="0" KERNING="0">&gt; args that shadow params table args, it is undefined which one has </FONT></DIV><DIV ALIGN="LEFT"><FONT FACE="Verdana" SIZE="3" COLOR="#000000" LETTERSPACING="0" KERNING="0">&gt; priority. Or we could make a rule that the params table entries get </FONT></DIV><DIV ALIGN="LEFT"><FONT FACE="Verdana" SIZE="3" COLOR="#000000" LETTERSPACING="0" KERNING="0">&gt; priority. Note, we are still limited by Flash 8 to having no </FONT></DIV><DIV ALIGN="LEFT"><FONT FACE="Verdana" SIZE="3" COLOR="#000000" LETTERSPACING="0" KERNING="0">&gt; duplicate query </FONT></DIV><DIV ALIGN="LEFT"><FONT FACE="Verdana" SIZE="3" COLOR="#000000" LETTERSPACING="0" KERNING="0">&gt; args in a </FONT></DIV><DIV ALIGN="LEFT"><FONT FACE="Verdana" SIZE="3" COLOR="#000000" LETTERSPACING="0" KERNING="0">&gt; SOLO GET request. </FONT></DIV><DIV ALIGN="LEFT"><FONT FACE="Verdana" SIZE="3" COLOR="#000000" LETTERSPACING="0" KERNING="0">&gt; </FONT></DIV><DIV ALIGN="LEFT"><FONT FACE="Verdana" SIZE="3" COLOR="#000000" LETTERSPACING="0" KERNING="0">&gt; So setQueryString would have slightly different behavior than what </FONT></DIV><DIV ALIGN="LEFT"><FONT FACE="Verdana" SIZE="3" COLOR="#000000" LETTERSPACING="0" KERNING="0">&gt; we have </FONT></DIV><DIV ALIGN="LEFT"><FONT FACE="Verdana" SIZE="3" COLOR="#000000" LETTERSPACING="0" KERNING="0">&gt; now, although for GET requests, it would actually be more like&nbsp; the </FONT></DIV><DIV ALIGN="LEFT"><FONT FACE="Verdana" SIZE="3" COLOR="#000000" LETTERSPACING="0" KERNING="0">&gt; pre-4.x behavior. For POST requests though, the query string set by </FONT></DIV><DIV ALIGN="LEFT"><FONT FACE="Verdana" SIZE="3" COLOR="#000000" LETTERSPACING="0" KERNING="0">&gt; setQueryString would really show up in the URL, and the params </FONT></DIV><DIV ALIGN="LEFT"><FONT FACE="Verdana" SIZE="3" COLOR="#000000" LETTERSPACING="0" KERNING="0">&gt; would show up in the post body. </FONT></DIV><DIV ALIGN="LEFT"><FONT FACE="Verdana" SIZE="3" COLOR="#000000" LETTERSPACING="0" KERNING="0">&gt; </FONT></DIV><DIV ALIGN="LEFT"><FONT FACE="Verdana" SIZE="3" COLOR="#000000" LETTERSPACING="0" KERNING="0">&gt; </FONT></DIV><DIV ALIGN="LEFT"><FONT FACE="Verdana" SIZE="3" COLOR="#000000" LETTERSPACING="0" KERNING="0">&gt; </FONT></DIV><DIV ALIGN="LEFT"><FONT FACE="Verdana" SIZE="3" COLOR="#000000" LETTERSPACING="0" KERNING="0">&gt; </FONT></DIV><DIV ALIGN="LEFT"><FONT FACE="Verdana" SIZE="3" COLOR="#000000" LETTERSPACING="0" KERNING="0">&gt; </FONT></DIV><DIV ALIGN="LEFT"><FONT FACE="Verdana" SIZE="3" COLOR="#000000" LETTERSPACING="0" KERNING="0">&gt; </FONT></DIV><DIV ALIGN="LEFT"><FONT FACE="Verdana" SIZE="3" COLOR="#000000" LETTERSPACING="0" KERNING="0">&gt; </FONT></DIV><DIV ALIGN="LEFT"><FONT FACE="Verdana" SIZE="3" COLOR="#000000" LETTERSPACING="0" KERNING="0">&gt; </FONT></DIV><DIV ALIGN="LEFT"><FONT FACE="Verdana" SIZE="3" COLOR="#000000" LETTERSPACING="0" KERNING="0">&gt; </FONT></DIV><DIV ALIGN="LEFT"><FONT FACE="Verdana" SIZE="3" COLOR="#000000" LETTERSPACING="0" KERNING="0">&gt; </FONT></DIV><DIV ALIGN="LEFT"><FONT FACE="Verdana" SIZE="3" COLOR="#000000" LETTERSPACING="0" KERNING="0">&gt; On Jan 21, 2008 8:18 PM, P T Withington &lt; <FONT COLOR="#3333FF"><A HREF="mailto:ptw@pobox.com"><U>ptw@pobox.com</U></A></FONT>&gt; wrote: </FONT></DIV><DIV ALIGN="LEFT"><FONT FACE="Verdana" SIZE="3" COLOR="#000000" LETTERSPACING="0" KERNING="0">&gt; </FONT></DIV><DIV ALIGN="LEFT"><FONT FACE="Verdana" SIZE="3" COLOR="#000000" LETTERSPACING="0" KERNING="0">&gt;&gt; What I was imaginging was in dataprovider API, you get: </FONT></DIV><DIV ALIGN="LEFT"><FONT FACE="Verdana" SIZE="3" COLOR="#000000" LETTERSPACING="0" KERNING="0">&gt;&gt; </FONT></DIV><DIV ALIGN="LEFT"><FONT FACE="Verdana" SIZE="3" COLOR="#000000" LETTERSPACING="0" KERNING="0">&gt;&gt; + URL (as an LzURL, which may have a non-null query component) </FONT></DIV><DIV ALIGN="LEFT"><FONT FACE="Verdana" SIZE="3" COLOR="#000000" LETTERSPACING="0" KERNING="0">&gt;&gt; + queryparams (which may have been set with setQueryString or </FONT></DIV><DIV ALIGN="LEFT"><FONT FACE="Verdana" SIZE="3" COLOR="#000000" LETTERSPACING="0" KERNING="0">&gt;&gt; setQueryParams on the dataset, but not via setSrc) </FONT></DIV><DIV ALIGN="LEFT"><FONT FACE="Verdana" SIZE="3" COLOR="#000000" LETTERSPACING="0" KERNING="0">&gt;&gt; </FONT></DIV><DIV ALIGN="LEFT"><FONT FACE="Verdana" SIZE="3" COLOR="#000000" LETTERSPACING="0" KERNING="0">&gt;&gt; At that API, the query component of the URL and the queryparams </FONT></DIV><DIV ALIGN="LEFT"><FONT FACE="Verdana" SIZE="3" COLOR="#000000" LETTERSPACING="0" KERNING="0">&gt;&gt; object </FONT></DIV><DIV ALIGN="LEFT"><FONT FACE="Verdana" SIZE="3" COLOR="#000000" LETTERSPACING="0" KERNING="0">&gt;&gt; have no relation to each other.&nbsp; There should be no need for </FONT></DIV><DIV ALIGN="LEFT"><FONT FACE="Verdana" SIZE="3" COLOR="#000000" LETTERSPACING="0" KERNING="0">&gt;&gt; querystring, since it should be the same as queryparams.&nbsp; The URL </FONT></DIV><DIV ALIGN="LEFT"><FONT FACE="Verdana" SIZE="3" COLOR="#000000" LETTERSPACING="0" KERNING="0">&gt;&gt; should come as an LzURL because, as I noted, you ought to be able to </FONT></DIV><DIV ALIGN="LEFT"><FONT FACE="Verdana" SIZE="3" COLOR="#000000" LETTERSPACING="0" KERNING="0">&gt;&gt; have a #fragment component of the URL that gets passed on too.&nbsp; If </FONT></DIV><DIV ALIGN="LEFT"><FONT FACE="Verdana" SIZE="3" COLOR="#000000" LETTERSPACING="0" KERNING="0">&gt;&gt; you </FONT></DIV><DIV ALIGN="LEFT"><FONT FACE="Verdana" SIZE="3" COLOR="#000000" LETTERSPACING="0" KERNING="0">&gt;&gt; send it as a string, you will just have to re-parse it anyways (at </FONT></DIV><DIV ALIGN="LEFT"><FONT FACE="Verdana" SIZE="3" COLOR="#000000" LETTERSPACING="0" KERNING="0">&gt;&gt; least for the HTTP/GET case). </FONT></DIV><DIV ALIGN="LEFT"><FONT FACE="Verdana" SIZE="3" COLOR="#000000" LETTERSPACING="0" KERNING="0">&gt;&gt; </FONT></DIV><DIV ALIGN="LEFT"><FONT FACE="Verdana" SIZE="3" COLOR="#000000" LETTERSPACING="0" KERNING="0">&gt;&gt; It should be only in the HTTP/GET transport that the queryparams are </FONT></DIV><DIV ALIGN="LEFT"><FONT FACE="Verdana" SIZE="3" COLOR="#000000" LETTERSPACING="0" KERNING="0">&gt;&gt; squeezed into the query component of the URL. For any other protocol, </FONT></DIV><DIV ALIGN="LEFT"><FONT FACE="Verdana" SIZE="3" COLOR="#000000" LETTERSPACING="0" KERNING="0">&gt;&gt; and for HTTP/POST, the queryparams are sent along a 'control </FONT></DIV><DIV ALIGN="LEFT"><FONT FACE="Verdana" SIZE="3" COLOR="#000000" LETTERSPACING="0" KERNING="0">&gt;&gt; channel' (the POST body, for instance). </FONT></DIV><DIV ALIGN="LEFT"><FONT FACE="Verdana" SIZE="3" COLOR="#000000" LETTERSPACING="0" KERNING="0">&gt;&gt; </FONT></DIV><DIV ALIGN="LEFT"><FONT FACE="Verdana" SIZE="3" COLOR="#000000" LETTERSPACING="0" KERNING="0">&gt;&gt; </FONT></DIV><DIV ALIGN="LEFT"><FONT FACE="Verdana" SIZE="3" COLOR="#000000" LETTERSPACING="0" KERNING="0">&gt;&gt; On 2008-01-21, at 20:00 EST, Henry Minsky wrote: </FONT></DIV><DIV ALIGN="LEFT"><FONT FACE="Verdana" SIZE="3" COLOR="#000000" LETTERSPACING="0" KERNING="0">&gt;&gt; </FONT></DIV><DIV ALIGN="LEFT"><FONT FACE="Verdana" SIZE="3" COLOR="#000000" LETTERSPACING="0" KERNING="0">&gt;&gt;&gt; I'm looking at how we can preserve the query string so it can remain </FONT></DIV><DIV ALIGN="LEFT"><FONT FACE="Verdana" SIZE="3" COLOR="#000000" LETTERSPACING="0" KERNING="0">&gt;&gt;&gt; attached to the URL when making a POST request. </FONT></DIV><DIV ALIGN="LEFT"><FONT FACE="Verdana" SIZE="3" COLOR="#000000" LETTERSPACING="0" KERNING="0">&gt;&gt;&gt; </FONT></DIV><DIV ALIGN="LEFT"><FONT FACE="Verdana" SIZE="3" COLOR="#000000" LETTERSPACING="0" KERNING="0">&gt;&gt;&gt; This requires some hacking at several levels, because&nbsp; while we can </FONT></DIV><DIV ALIGN="LEFT"><FONT FACE="Verdana" SIZE="3" COLOR="#000000" LETTERSPACING="0" KERNING="0">&gt;&gt;&gt; (and do) </FONT></DIV><DIV ALIGN="LEFT"><FONT FACE="Verdana" SIZE="3" COLOR="#000000" LETTERSPACING="0" KERNING="0">&gt;&gt;&gt; keep the query string and query params separate in the LzDataset, </FONT></DIV><DIV ALIGN="LEFT"><FONT FACE="Verdana" SIZE="3" COLOR="#000000" LETTERSPACING="0" KERNING="0">&gt;&gt;&gt; we're mushing them together into a single url in LZHTTPDataProvider, </FONT></DIV><DIV ALIGN="LEFT"><FONT FACE="Verdana" SIZE="3" COLOR="#000000" LETTERSPACING="0" KERNING="0">&gt;&gt;&gt; and all </FONT></DIV><DIV ALIGN="LEFT"><FONT FACE="Verdana" SIZE="3" COLOR="#000000" LETTERSPACING="0" KERNING="0">&gt;&gt;&gt; the levels below that expect a single URL with all the data in it. </FONT></DIV><DIV ALIGN="LEFT"><FONT FACE="Verdana" SIZE="3" COLOR="#000000" LETTERSPACING="0" KERNING="0">&gt;&gt;&gt; Unfortunately that extends to the proxy server as well, it expects </FONT></DIV><DIV ALIGN="LEFT"><FONT FACE="Verdana" SIZE="3" COLOR="#000000" LETTERSPACING="0" KERNING="0">&gt;&gt;&gt; to see a </FONT></DIV><DIV ALIGN="LEFT"><FONT FACE="Verdana" SIZE="3" COLOR="#000000" LETTERSPACING="0" KERNING="0">&gt;&gt;&gt; single query string. </FONT></DIV><DIV ALIGN="LEFT"><FONT FACE="Verdana" SIZE="3" COLOR="#000000" LETTERSPACING="0" KERNING="0">&gt;&gt;&gt; </FONT></DIV><DIV ALIGN="LEFT"><FONT FACE="Verdana" SIZE="3" COLOR="#000000" LETTERSPACING="0" KERNING="0">&gt;&gt;&gt; The reason we're in trouble here is that a decision&nbsp; early on was </FONT></DIV><DIV ALIGN="LEFT"><FONT FACE="Verdana" SIZE="3" COLOR="#000000" LETTERSPACING="0" KERNING="0">&gt;&gt;&gt; made to </FONT></DIV><DIV ALIGN="LEFT"><FONT FACE="Verdana" SIZE="3" COLOR="#000000" LETTERSPACING="0" KERNING="0">&gt;&gt;&gt; try to abstract data transport away from </FONT></DIV><DIV ALIGN="LEFT"><FONT FACE="Verdana" SIZE="3" COLOR="#000000" LETTERSPACING="0" KERNING="0">&gt;&gt;&gt; HTTP and URLs, etc, and just treat it as key-value pairs, and that </FONT></DIV><DIV ALIGN="LEFT"><FONT FACE="Verdana" SIZE="3" COLOR="#000000" LETTERSPACING="0" KERNING="0">&gt;&gt;&gt; has come </FONT></DIV><DIV ALIGN="LEFT"><FONT FACE="Verdana" SIZE="3" COLOR="#000000" LETTERSPACING="0" KERNING="0">&gt;&gt;&gt; back to bite us. </FONT></DIV><DIV ALIGN="LEFT"><FONT FACE="Verdana" SIZE="3" COLOR="#000000" LETTERSPACING="0" KERNING="0">&gt;&gt;&gt; </FONT></DIV><DIV ALIGN="LEFT"><FONT FACE="Verdana" SIZE="3" COLOR="#000000" LETTERSPACING="0" KERNING="0">&gt;&gt;&gt; It extends to our protocol for proxy requests; the protocol we have </FONT></DIV><DIV ALIGN="LEFT"><FONT FACE="Verdana" SIZE="3" COLOR="#000000" LETTERSPACING="0" KERNING="0">&gt;&gt;&gt; with the </FONT></DIV><DIV ALIGN="LEFT"><FONT FACE="Verdana" SIZE="3" COLOR="#000000" LETTERSPACING="0" KERNING="0">&gt;&gt;&gt; server is to expect a single URL containing all data and query args </FONT></DIV><DIV ALIGN="LEFT"><FONT FACE="Verdana" SIZE="3" COLOR="#000000" LETTERSPACING="0" KERNING="0">&gt;&gt;&gt; mixed </FONT></DIV><DIV ALIGN="LEFT"><FONT FACE="Verdana" SIZE="3" COLOR="#000000" LETTERSPACING="0" KERNING="0">&gt;&gt;&gt; together. </FONT></DIV><DIV ALIGN="LEFT"><FONT FACE="Verdana" SIZE="3" COLOR="#000000" LETTERSPACING="0" KERNING="0">&gt;&gt;&gt; </FONT></DIV><DIV ALIGN="LEFT"><FONT FACE="Verdana" SIZE="3" COLOR="#000000" LETTERSPACING="0" KERNING="0">&gt;&gt;&gt; We should probably change the protocol we're using for proxy data </FONT></DIV><DIV ALIGN="LEFT"><FONT FACE="Verdana" SIZE="3" COLOR="#000000" LETTERSPACING="0" KERNING="0">&gt;&gt;&gt; requests, </FONT></DIV><DIV ALIGN="LEFT"><FONT FACE="Verdana" SIZE="3" COLOR="#000000" LETTERSPACING="0" KERNING="0">&gt;&gt;&gt; to explicitly pass the data params </FONT></DIV><DIV ALIGN="LEFT"><FONT FACE="Verdana" SIZE="3" COLOR="#000000" LETTERSPACING="0" KERNING="0">&gt;&gt;&gt; separately from the URL. We might be able to get away with reusing </FONT></DIV><DIV ALIGN="LEFT"><FONT FACE="Verdana" SIZE="3" COLOR="#000000" LETTERSPACING="0" KERNING="0">&gt;&gt;&gt; the magic </FONT></DIV><DIV ALIGN="LEFT"><FONT FACE="Verdana" SIZE="3" COLOR="#000000" LETTERSPACING="0" KERNING="0">&gt;&gt;&gt; &quot;lzpostbody&quot;&nbsp; arg as we do now, but making the </FONT></DIV><DIV ALIGN="LEFT"><FONT FACE="Verdana" SIZE="3" COLOR="#000000" LETTERSPACING="0" KERNING="0">&gt;&gt;&gt; policy that the client does not have to send that as the *only </FONT></DIV><DIV ALIGN="LEFT"><FONT FACE="Verdana" SIZE="3" COLOR="#000000" LETTERSPACING="0" KERNING="0">&gt;&gt;&gt; *query arg. </FONT></DIV><DIV ALIGN="LEFT"><FONT FACE="Verdana" SIZE="3" COLOR="#000000" LETTERSPACING="0" KERNING="0">&gt;&gt;&gt; The client can instead send the URL with querystring </FONT></DIV><DIV ALIGN="LEFT"><FONT FACE="Verdana" SIZE="3" COLOR="#000000" LETTERSPACING="0" KERNING="0">&gt;&gt;&gt; and the server will pluck out the lzpostbody arg if there is one, </FONT></DIV><DIV ALIGN="LEFT"><FONT FACE="Verdana" SIZE="3" COLOR="#000000" LETTERSPACING="0" KERNING="0">&gt;&gt;&gt; and use it </FONT></DIV><DIV ALIGN="LEFT"><FONT FACE="Verdana" SIZE="3" COLOR="#000000" LETTERSPACING="0" KERNING="0">&gt;&gt;&gt; for the post body, while keeping the rest </FONT></DIV><DIV ALIGN="LEFT"><FONT FACE="Verdana" SIZE="3" COLOR="#000000" LETTERSPACING="0" KERNING="0">&gt;&gt;&gt; of the args as the query string. </FONT></DIV><DIV ALIGN="LEFT"><FONT FACE="Verdana" SIZE="3" COLOR="#000000" LETTERSPACING="0" KERNING="0">&gt;&gt;&gt; </FONT></DIV><DIV ALIGN="LEFT"><FONT FACE="Verdana" SIZE="3" COLOR="#000000" LETTERSPACING="0" KERNING="0">&gt;&gt;&gt; For SOLO requests, we can also use the lzpostbody for the query </FONT></DIV><DIV ALIGN="LEFT"><FONT FACE="Verdana" SIZE="3" COLOR="#000000" LETTERSPACING="0" KERNING="0">&gt;&gt;&gt; params; </FONT></DIV><DIV ALIGN="LEFT"><FONT FACE="Verdana" SIZE="3" COLOR="#000000" LETTERSPACING="0" KERNING="0">&gt;&gt;&gt; internally in the LFC, the code path for </FONT></DIV><DIV ALIGN="LEFT"><FONT FACE="Verdana" SIZE="3" COLOR="#000000" LETTERSPACING="0" KERNING="0">&gt;&gt;&gt; raw SOLO posts actually keeps the raw post data in a separate var </FONT></DIV><DIV ALIGN="LEFT"><FONT FACE="Verdana" SIZE="3" COLOR="#000000" LETTERSPACING="0" KERNING="0">&gt;&gt;&gt; all the </FONT></DIV><DIV ALIGN="LEFT"><FONT FACE="Verdana" SIZE="3" COLOR="#000000" LETTERSPACING="0" KERNING="0">&gt;&gt;&gt; way down to where the HTTP request is sent, </FONT></DIV><DIV ALIGN="LEFT"><FONT FACE="Verdana" SIZE="3" COLOR="#000000" LETTERSPACING="0" KERNING="0">&gt;&gt;&gt; so we can stick the query params data&nbsp; as a URL-encoded query string </FONT></DIV><DIV ALIGN="LEFT"><FONT FACE="Verdana" SIZE="3" COLOR="#000000" LETTERSPACING="0" KERNING="0">&gt;&gt;&gt; in </FONT></DIV><DIV ALIGN="LEFT"><FONT FACE="Verdana" SIZE="3" COLOR="#000000" LETTERSPACING="0" KERNING="0">&gt;&gt;&gt; there. </FONT></DIV><DIV ALIGN="LEFT"><FONT FACE="Verdana" SIZE="3" COLOR="#000000" LETTERSPACING="0" KERNING="0">&gt;&gt;&gt; </FONT></DIV><DIV ALIGN="LEFT"><FONT FACE="Verdana" SIZE="3" COLOR="#000000" LETTERSPACING="0" KERNING="0">&gt;&gt;&gt; I'm going to try making a patch to do this, for wafflecone. I don't </FONT></DIV><DIV ALIGN="LEFT"><FONT FACE="Verdana" SIZE="3" COLOR="#000000" LETTERSPACING="0" KERNING="0">&gt;&gt;&gt; know if </FONT></DIV><DIV ALIGN="LEFT"><FONT FACE="Verdana" SIZE="3" COLOR="#000000" LETTERSPACING="0" KERNING="0">&gt;&gt;&gt; it's worth trying to make a back compatibility flag for </FONT></DIV><DIV ALIGN="LEFT"><FONT FACE="Verdana" SIZE="3" COLOR="#000000" LETTERSPACING="0" KERNING="0">&gt;&gt;&gt; this now, or just say that we're changing the things work again; </FONT></DIV><DIV ALIGN="LEFT"><FONT FACE="Verdana" SIZE="3" COLOR="#000000" LETTERSPACING="0" KERNING="0">&gt;&gt;&gt; people were </FONT></DIV><DIV ALIGN="LEFT"><FONT FACE="Verdana" SIZE="3" COLOR="#000000" LETTERSPACING="0" KERNING="0">&gt;&gt;&gt; getting unexpected results when we </FONT></DIV><DIV ALIGN="LEFT"><FONT FACE="Verdana" SIZE="3" COLOR="#000000" LETTERSPACING="0" KERNING="0">&gt;&gt;&gt; changed things for 4.x to have setQueryString null out the query </FONT></DIV><DIV ALIGN="LEFT"><FONT FACE="Verdana" SIZE="3" COLOR="#000000" LETTERSPACING="0" KERNING="0">&gt;&gt;&gt; params and </FONT></DIV><DIV ALIGN="LEFT"><FONT FACE="Verdana" SIZE="3" COLOR="#000000" LETTERSPACING="0" KERNING="0">&gt;&gt;&gt; vice versa, so maybe just backing out </FONT></DIV><DIV ALIGN="LEFT"><FONT FACE="Verdana" SIZE="3" COLOR="#000000" LETTERSPACING="0" KERNING="0">&gt;&gt;&gt; of that behavior is best. Introducing this new behavior which keeps </FONT></DIV><DIV ALIGN="LEFT"><FONT FACE="Verdana" SIZE="3" COLOR="#000000" LETTERSPACING="0" KERNING="0">&gt;&gt;&gt; the </FONT></DIV><DIV ALIGN="LEFT"><FONT FACE="Verdana" SIZE="3" COLOR="#000000" LETTERSPACING="0" KERNING="0">&gt;&gt;&gt; query string args confined to the URL even </FONT></DIV><DIV ALIGN="LEFT"><FONT FACE="Verdana" SIZE="3" COLOR="#000000" LETTERSPACING="0" KERNING="0">&gt;&gt;&gt; in POST requests seems like a more HTTP/HTML compatible API, </FONT></DIV><DIV ALIGN="LEFT"><FONT FACE="Verdana" SIZE="3" COLOR="#000000" LETTERSPACING="0" KERNING="0">&gt;&gt;&gt; considering </FONT></DIV><DIV ALIGN="LEFT"><FONT FACE="Verdana" SIZE="3" COLOR="#000000" LETTERSPACING="0" KERNING="0">&gt;&gt;&gt; that XMLHTTPRequest behaves that way; </FONT></DIV><DIV ALIGN="LEFT"><FONT FACE="Verdana" SIZE="3" COLOR="#000000" LETTERSPACING="0" KERNING="0">&gt;&gt;&gt; In XMLHTTPRequest, you open a request to a URL, which can have query </FONT></DIV><DIV ALIGN="LEFT"><FONT FACE="Verdana" SIZE="3" COLOR="#000000" LETTERSPACING="0" KERNING="0">&gt;&gt;&gt; string, </FONT></DIV><DIV ALIGN="LEFT"><FONT FACE="Verdana" SIZE="3" COLOR="#000000" LETTERSPACING="0" KERNING="0">&gt;&gt;&gt; and then you call send(data) with </FONT></DIV><DIV ALIGN="LEFT"><FONT FACE="Verdana" SIZE="3" COLOR="#000000" LETTERSPACING="0" KERNING="0">&gt;&gt;&gt; any POST data you want to stuff in the request body.&nbsp; I feel like we </FONT></DIV><DIV ALIGN="LEFT"><FONT FACE="Verdana" SIZE="3" COLOR="#000000" LETTERSPACING="0" KERNING="0">&gt;&gt;&gt; ought </FONT></DIV><DIV ALIGN="LEFT"><FONT FACE="Verdana" SIZE="3" COLOR="#000000" LETTERSPACING="0" KERNING="0">&gt;&gt;&gt; to be trying to emulate that model, I don't see </FONT></DIV><DIV ALIGN="LEFT"><FONT FACE="Verdana" SIZE="3" COLOR="#000000" LETTERSPACING="0" KERNING="0">&gt;&gt;&gt; the point in trying to abstract away from it, we've just caused </FONT></DIV><DIV ALIGN="LEFT"><FONT FACE="Verdana" SIZE="3" COLOR="#000000" LETTERSPACING="0" KERNING="0">&gt;&gt;&gt; trouble by </FONT></DIV><DIV ALIGN="LEFT"><FONT FACE="Verdana" SIZE="3" COLOR="#000000" LETTERSPACING="0" KERNING="0">&gt;&gt;&gt; doing so, so far. </FONT></DIV><DIV ALIGN="LEFT"><FONT FACE="Verdana" SIZE="3" COLOR="#000000" LETTERSPACING="0" KERNING="0">&gt;&gt;&gt; </FONT></DIV><DIV ALIGN="LEFT"><FONT FACE="Verdana" SIZE="3" COLOR="#000000" LETTERSPACING="0" KERNING="0">&gt;&gt;&gt; </FONT></DIV><DIV ALIGN="LEFT"><FONT FACE="Verdana" SIZE="3" COLOR="#000000" LETTERSPACING="0" KERNING="0">&gt;&gt;&gt; </FONT></DIV><DIV ALIGN="LEFT"><FONT FACE="Verdana" SIZE="3" COLOR="#000000" LETTERSPACING="0" KERNING="0">&gt;&gt;&gt; </FONT></DIV><DIV ALIGN="LEFT"><FONT FACE="Verdana" SIZE="3" COLOR="#000000" LETTERSPACING="0" KERNING="0">&gt;&gt;&gt; </FONT></DIV><DIV ALIGN="LEFT"><FONT FACE="Verdana" SIZE="3" COLOR="#000000" LETTERSPACING="0" KERNING="0">&gt;&gt;&gt; </FONT></DIV><DIV ALIGN="LEFT"><FONT FACE="Verdana" SIZE="3" COLOR="#000000" LETTERSPACING="0" KERNING="0">&gt;&gt;&gt; </FONT></DIV><DIV ALIGN="LEFT"><FONT FACE="Verdana" SIZE="3" COLOR="#000000" LETTERSPACING="0" KERNING="0">&gt;&gt;&gt; </FONT></DIV><DIV ALIGN="LEFT"><FONT FACE="Verdana" SIZE="3" COLOR="#000000" LETTERSPACING="0" KERNING="0">&gt;&gt;&gt; -- </FONT></DIV><DIV ALIGN="LEFT"><FONT FACE="Verdana" SIZE="3" COLOR="#000000" LETTERSPACING="0" KERNING="0">&gt;&gt;&gt; Henry Minsky </FONT></DIV><DIV ALIGN="LEFT"><FONT FACE="Verdana" SIZE="3" COLOR="#000000" LETTERSPACING="0" KERNING="0">&gt;&gt;&gt; Software Architect </FONT></DIV><DIV ALIGN="LEFT"><FONT FACE="Verdana" SIZE="3" COLOR="#000000" LETTERSPACING="0" KERNING="0">&gt;&gt;&gt; <FONT COLOR="#3333FF"><A HREF="mailto:hminsky@laszlosystems.com"><U>hminsky@laszlosystems.com</U></A></FONT></FONT></DIV><DIV ALIGN="LEFT"><FONT FACE="Verdana" SIZE="3" COLOR="#000000" LETTERSPACING="0" KERNING="0">&gt;&gt; </FONT></DIV><DIV ALIGN="LEFT"><FONT FACE="Verdana" SIZE="3" COLOR="#000000" LETTERSPACING="0" KERNING="0">&gt;&gt; </FONT></DIV><DIV ALIGN="LEFT"><FONT FACE="Verdana" SIZE="3" COLOR="#000000" LETTERSPACING="0" KERNING="0">&gt; </FONT></DIV><DIV ALIGN="LEFT"><FONT FACE="Verdana" SIZE="3" COLOR="#000000" LETTERSPACING="0" KERNING="0">&gt; </FONT></DIV><DIV ALIGN="LEFT"><FONT FACE="Verdana" SIZE="3" COLOR="#000000" LETTERSPACING="0" KERNING="0">&gt; -- </FONT></DIV><DIV ALIGN="LEFT"><FONT FACE="Verdana" SIZE="3" COLOR="#000000" LETTERSPACING="0" KERNING="0">&gt; Henry Minsky </FONT></DIV><DIV ALIGN="LEFT"><FONT FACE="Verdana" SIZE="3" COLOR="#000000" LETTERSPACING="0" KERNING="0">&gt; Software Architect </FONT></DIV><DIV ALIGN="LEFT"><FONT FACE="Verdana" SIZE="3" COLOR="#000000" LETTERSPACING="0" KERNING="0">&gt; <FONT COLOR="#3333FF"><A HREF="mailto:hminsky@laszlosystems.com"><U>hminsky@laszlosystems.com</U></A></FONT></FONT></DIV><FONT FACE="Verdana" SIZE="3" COLOR="#000000" LETTERSPACING="0" KERNING="0"><br></FONT><DIV ALIGN="LEFT"><FONT FACE="Verdana" SIZE="3" COLOR="#3333FF" LETTERSPACING="0" KERNING="0"><A HREF="mailto:hminsky@laszlosystems.com"></A></FONT></DIV><FONT FACE="Verdana" SIZE="3" COLOR="#000000" LETTERSPACING="0" KERNING="0"><br></FONT><FONT FACE="Verdana" SIZE="3" COLOR="#000000" LETTERSPACING="0" KERNING="0"><br></FONT><FONT FACE="Verdana" SIZE="3" COLOR="#000000" LETTERSPACING="0" KERNING="0"><br></FONT><DIV ALIGN="LEFT"><FONT FACE="Verdana" SIZE="3" COLOR="#000000" LETTERSPACING="0" KERNING="0">-- </FONT></DIV><DIV ALIGN="LEFT"><FONT FACE="Verdana" SIZE="3" COLOR="#000000" LETTERSPACING="0" KERNING="0">Henry Minsky </FONT></DIV><DIV ALIGN="LEFT"><FONT FACE="Verdana" SIZE="3" COLOR="#000000" LETTERSPACING="0" KERNING="0">Software Architect </FONT></DIV><DIV ALIGN="LEFT"><FONT FACE="Verdana" SIZE="3" COLOR="#3333FF" LETTERSPACING="0" KERNING="0"><A HREF="mailto:hminsky@laszlosystems.com"><U>hminsky@laszlosystems.com</U></A><FONT COLOR="#000000"></FONT></FONT></DIV><FONT FACE="Verdana" SIZE="3" COLOR="#000000" LETTERSPACING="0" KERNING="0"><br></FONT>