[squeak-dev] Re: WebClient httpGet with pre-encoded url's
Frank Shearar
frank.shearar at angband.za.org
Tue Aug 10 13:32:12 UTC 2010
Hm, I fell afoul of the 100k limit in posting a fix for this.
I'd changed a single line in WebClient>>sendRequest:content:size:
"Handle redirect if needed"
(self allowRedirect and: [#(301 302 307) includes: response code])
ifTrue:[
frank
On 2010/08/10 09:26, Jan van de Sandt wrote:
> Hello Andreas,
>
> Yes, it works fine. Thanks.
>
> But now a request for another feature :-) AWS sometimes sends responses
> back with 'HTTP/1.1 307 Temporary Redirect'. I see that 301 and 302
> redirects are handled automatically. Can you add support for a 307
> redirect as well?
>
> Jan.
>
>
>
> On Tue, Aug 10, 2010 at 7:17 AM, Andreas Raab <andreas.raab at gmx.de
> <mailto:andreas.raab at gmx.de>> wrote:
>
> Hi Jan -
>
> This should be fixed in the latest version. All requests can now
> optionally take encoded URL strings. Give it a shot and let me know
> if it works for you.
>
> Hope this helps,
> - Andreas
>
>
> On 8/9/2010 7:32 AM, Jan van de Sandt wrote:
>
> Hello,
>
> I am busy updating the CloudforkAWS code to use WebClient as a
> the HTTP
> client. CloudforkAWS provides a Smalltalk API to the Amazon AWS REST
> services.
>
> WebClient works really well, the not so common HTTP methods like
> HEAD,
> DELETE and PUT that the Simple Storage Service (S3) require work
> without
> any problems :-)
>
> There is only one small problem. The WebClient>>httpGet:do: method
> always encodes the urlString. In my situation the url is already
> encoded
> and encoding it a second time leads to errors. In my code I
> encode the
> individual query parameters names and values before I compose the
> complete url. If you have a parameters like this I think it is
> the only
> correct way:
>
> param1=you&me
> param2=coming for dinner?
>
> So I added the following methods to WebClient:
>
> httpGet: urlString encoded: isEncoded do: aBlock
> "GET the response from the given url"
> | request |
> self initializeFromUrl: urlString.
> request := self requestWithUrl: urlString encoded: isEncoded.
> request method: 'GET'.
> userAgent ifNotNil:[request headerAt: 'User-Agent' put: userAgent].
> aBlock value: request.
> ^self sendRequest: request
>
> and:
>
> requestWithUrl: urlString encoded: isEncoded
> "Create an return a new WebRequest initialized with the given url.
> Subclasses can use this method to override the default request
> class."
>
> ^WebRequest new initializeFromUrl: urlString encoded: isEncoded.
>
> It would be great if these methods are incorporated in the base
> package.
>
> Jan.
>
>
>
>
>
>
>
>
>
>
More information about the Squeak-dev
mailing list
|