开发者

Preventing ASIHTTPRequest from following HTTP 303 See Other

开发者 https://www.devze.com 2023-03-13 23:23 出处:网络
I\'m writing an iPhone Application using the ASIHTTPRequest (http://allseeing-i.com/ASIHTTPRequest/) library for REST interactions to a Web App\'s RESTful services.

I'm writing an iPhone Application using the ASIHTTPRequest (http://allseeing-i.com/ASIHTTPRequest/) library for REST interactions to a Web App's RESTful services.

I am currently facing a bug where I am receiving a 200 OK from one of these pages and there is no body. Additionally, I noticed that the headers are blank after the request has been completed, but the headers were not blank beforehand (they were filled with an OAuth Authentication).

Through an over-complicated network / proxy setup, I was able to verify that I am receiving a 303 (as expected) and that ASIHTTPRequest i开发者_如何学Pythons following that request (as semi-expected). However, since I need to recreate my OAuth authentication headers so that the RESTful services will give me the information I want, I need to prevent ASIHTTPRequest from following 303s, and instead to just return the 303 so I can read the Location header myself and create a new request with the appropriate OAuth Headers.

If anybody has had to do this, please let me know how you did it!

Thanks, Tyler

Dives off the diving board into the NSAutoreleasePool


You can check your HTTP status in request:didReceiveResponseHeaders: delegate method. Here's the code:

- (void)request:(ASIHTTPRequest *)request didReceiveResponseHeaders:(NSDictionary *)responseHeaders {
    if(request.responseStatusCode == 303) {
        [request cancel];
    }
}

- (void)requestFailed:(ASIHTTPRequest *)request {
    if(request.responseStatusCode == 303) {
            // here you can call your custom methods
        }
}

It will cancel your connection as soon as it receives HTTP headers, so it will not load the full page.

0

精彩评论

暂无评论...
验证码 换一张
取 消