【问题标题】:Handling redirected HTTP POST requests with empty body in iOS在 iOS 中处理带有空正文的重定向 HTTP POST 请求
【发布时间】:2012-12-18 16:48:19
【问题描述】:

我正在开发一个与远程 WS 交互的 iOS 应用程序。 由于 WS 的 URL 可能会不时更改,应用程序应将所有请求发送到一个固定且稳定的 URL,该 URL 负责将它们重定向到 WS 的实际 URL。

这是我的代码:

- (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,是用一个空的主体(没有参数)发送的。看起来原始请求的所有参数都丢失了,即使我使用原始请求的精确副本。

你们怎么看?我该如何解决这个问题?

谢谢!

【问题讨论】:

  • lastRequests postBody 好吗? :: assert([[lastRequest HTTPBody] 长度]);
  • 如果你不使用 ARC,你可能需要保留 r。您也可以尝试使用 copy 而不是 mutableCopy。

标签: ios http redirect post nsurlrequest


【解决方案1】:

我认为问题与以下事实有关,根据 HTTP 标准,重定向请求应该使用 GET 方法,因此请求正文为空。

我通过返回 nil 而不是 r 并使用正确的 URL 生成新请求来解决问题。

【讨论】:

    猜你喜欢
    • 2019-03-15
    • 1970-01-01
    • 1970-01-01
    • 2010-12-08
    • 1970-01-01
    • 1970-01-01
    • 2021-03-12
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多