2012-12-18 142 views
0

我正在研究與遠程WS進行交互的iOS應用程序。 由於WS的URL可能會不時發生變化,因此應用程序應將所有請求發送到固定且穩定的URL,以便將它們重定向到WS的實際URL。在iOS中處理帶空體的重定向HTTP POST請求

這裏是我的代碼:

- (NSURLRequest *)connection: (NSURLConnection *)connection 
     willSendRequest: (NSURLRequest *)request 
     redirectResponse: (NSURLResponse *)redirectResponse { 

if (redirectResponse) { 
    NSMutableURLRequest *r = [lastRequest mutableCopy]; 
    [r setURL: [request URL]]; 

    return r; 
} else { 
    return request; 
} 
} 

其中lastRequest是已發送的原始請求的副本。

這是我的問題:我不知道爲什麼,但是新的請求,即r,與一個空的身體(無參數)發送。看起來像原始請求的所有參數都會丟失,即使我使用了原始請求的精確副本。

你們認爲什麼?我怎樣才能解決這個問題?

謝謝!

+0

is lastRequests postBody good? :: assert([[lastRequest HTTPBody] length]); –

+0

如果您不使用ARC,則可能需要保留r。你也可以嘗試使用複製代替mutableCopy。 –

回答

0

我認爲這個問題與HTTP標準有關,重定向的請求應該使用GET方法,因此請求主體是空的。

我通過返回nil而不是r來解決問題,並使用正確的URL生成新的請求。