Hi, Yeah, I am pretty sure our Api client takes a litteral query string and since we store it that way it is probablly sending it that way.
Paul. 2009/3/3 Matt Sanford <[email protected]> > Hi all, > If you send something invalid we do attempt to fix-up invalid requests > rather than just 400. This looks like a case where the bad request becomes a > different sort of badness on the way out. Escaping the quotes seems like the > only real fix. > > — Matt > > On Mar 3, 2009, at 09:13 AM, Chad Etzel wrote: > > > Ok, I can replicate your results with curl > > $ curl -v "http://search.twitter.com/search.json?q=\"exeter%20city\"" > > ...returns the wrong results, as you say. > > $ curl -v "http://search.twitter.com/search.json?q=%22exeter%20city%22" > > ...returns the correct results. > > I think double quotes are not actually valid URL characters (tho some > browsers try to treat them as such), so you should really turn " into > %22 before the requests go out. > > > That said, I'm starting to agree with Paul that twitter is doing some > sort of encoding trick on their end when literal quotes are sent in > the request: > > $ curl -v http://search.twitter.com/search.json?q=\"exeter%20city\" > * About to connect() to search.twitter.com port 80 (#0) > * Trying 128.121.146.107... connected > * Connected to search.twitter.com (128.121.146.107) port 80 (#0) > > GET /search.json?q="exeter%20city" HTTP/1.1 > > User-Agent: curl/7.16.4 (i486-pc-linux-gnu) libcurl/7.16.4 OpenSSL/0.9.8e > zlib/1.2.3.3 libidn/1.0 > > Host: search.twitter.com > > Accept: */* > > > < HTTP/1.1 200 OK > < Date: Tue, 03 Mar 2009 17:09:34 GMT > < Server: hi > < Status: 200 OK > < Cache-Control: max-age=20, must-revalidate, max-age=300 > < Content-Type: application/json; charset=utf-8 > < X-Served-By: searchweb003.twitter.com > < Expires: Tue, 03 Mar 2009 17:14:34 GMT > < Content-Length: 195 > < Vary: Accept-Encoding > < X-Varnish: 1733084231 > < Age: 0 > < Via: 1.1 varnish > < X-Cache-Svr: searchweb003.twitter.com > < X-Cache: MISS > < Connection: close > < > * Closing connection #0 > > {"results":[],"since_id":0,"max_id":1274236746,"refresh_url":"?since_id=1274236746&q=%22exeter%2520city%22","results_per_page":15,"completed_in":0.112164,"page":1,"query":"%22exeter%2520city%22"} > > Now, one could argue that the request itself is invalid or malformed, > and so the result may be undefined, but I do agree that something is > happening on twitter's end. > > > Moral of the story: encode " as %22 in URLs. > > -Chad > > On Tue, Mar 3, 2009 at 11:33 AM, Paul Kinlan <[email protected]> > wrote: > > Hi, > > > It works with the "+", but I knew that :) > > > With a space (in IE) it encodes it as %20 when it makes the request and I > > can see it through fiddler (as below) and it comes back. > > > GET /search.json?q="exeter%20city" HTTP/1.1 > > Accept: image/gif, image/x-xbitmap, image/jpeg, image/pjpeg, > > application/x-ms-application, application/vnd.ms-xpsdocument, > > application/xaml+xml, application/x-ms-xbap, application/x-shockwave-flash, > > application/vnd.ms-excel, application/vnd.ms-powerpoint, > application/msword, > > */* > > Accept-Language: en-gb > > UA-CPU: x86 > > Accept-Encoding: gzip, deflate > > User-Agent: Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 6.0; SLCC1; .NET > > CLR 2.0.50727; .NET CLR 3.5.21022; .NET CLR 3.5.30729; .NET CLR 3.0.30618; > > InfoPath.2; OfficeLiveConnector.1.3; OfficeLivePatch.0.0) > > Host: search.twitter.com > > Connection: Keep-Alive > > Cookie: > > __utma=43838368.379476752167577530.1234449205.1234449205.1234449205.1; > > __utmz=43838368.1234449205.1.1.utmcsr=blog.twe2.com > |utmccn=(referral)|utmcmd=referral|utmcct=/; > > __utmv=43838368.lang%3A%20en_GB > > > I fully accept it is probably our client software that is not encoding > > correcly, but I also tried this from the command line curl > > "http://search.twitter.com/search.json?q=\"exeter%20city\"" the response > > comes back as %22exeter%2520city%22 in the json object. From my point of > > view I know the quotes are not correct, but it looks like twitter is > > encoding them when it recieves them. I belive our client API is sending > > double quotes rather %22. > > > Kind Regards, > > Paul > > > 2009/3/3 Chad Etzel <[email protected]> > > > I also just tested searching "exeter city" in TweetGrid with IE, > > FireFox, and Chrome. All came back with the same results. > > fwiw, > > -Chad > > > On Tue, Mar 3, 2009 at 11:14 AM, Matt Sanford <[email protected]> wrote: > > Hi Paul, > > I just tested form the command line and everything seems fine > > with: curl > > 'http://search.twitter.com/search.json?q=%22exeter%20city%22'<http://search.twitter.com/search.json?q=%22exeter%20city%22%27> > > If you are typing %20 into the IE address bar it is likely try to > > correct your % (which is not a valid URL character) and making it %25 > > in > > the request but displaying it correctly to you. Try replacing it with a > > + or > > a space and see what you get. > > Thanks; > > — Matt > > - Show quoted text - > > On Mar 3, 2009, at 08:06 AM, Paul Kinlan wrote: > > > Forgot to add, I am checking our client library now too. > > > Paul. > > > 2009/3/3 Paul Kinlan <[email protected]> > > > Hi Matt, > > > I was typing the search term through IE (to test it after reports that > > "" > > enclosed searches aren't working) as > > http://search.twitter.com/search.json?q="exeter city" which it then > > converts > > to http://search.twitter.com/search.json?q="exeter%20city" but the > > result > > came back as "%22exeter%2520city%22" (see json object below) in the > > search > > API json object. It works in firefox so I am presuming firefox is > > correctly > > encoding the url. > > > > > > {"results":[],"since_id":0,"max_id":1273765306,"refresh_url":"?since_id=1273765306&q=%22exeter%2520city%22","results_per_page":15,"completed_in":1.313905,"page":1,"query":"%22exeter%2520city%22"} > > > it is highly likely that if IE is having the issue, the client API > > would > > probably have it, however the query that is going out over the wire (I > > checked with fiddler as "exeter%20city" and the result comes back as > > above, > > so I don't think it is us for the entire problem). > > > Kind Regards, > > Paul. > > > 2009/3/3 Matt Sanford <[email protected]> > > > Hi Paul, > > It sounds like whatever is generating your API requests is double > > URL > > encoding. So the space becomes %20, and then on the second url > > encoding the > > % becomes a %25. > > Thanks; > > — Matt Sanford / @mzsanford > > On Mar 3, 2009, at 07:34 AM, Paul Kinlan wrote: > > > Hi, > > > I am noticing something that I think is odd at the moment. > > > Some of our users are not getting searches that are enclosed in quotes > > via the API, yet they work directly from the website. > > > For example there is a difference between the following query on the > > API > > and Website: > > > http://search.twitter.com/search?q=%22exeter%20city%22 which has the > > same > > results as http://search.twitter.com/search?q=%22exeter+city%22 > > > but returns a different result via the API using the following query > > > http://search.twitter.com/search.json?q="exeter%20city" > > > Looking at what is returned by the API the query looks like it has > > been > > transformed in to "%22exeter%2520city%22". To me the %2520 looks odd > > when I > > would expect %20 > > > Kind Regards, > > Paul Kinlan > > > > > > > > > >
