Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/http/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在iOS中处理具有空正文的重定向HTTP POST请求_Ios_Http_Redirect_Post_Nsurlrequest - Fatal编程技术网

在iOS中处理具有空正文的重定向HTTP POST请求

在iOS中处理具有空正文的重定向HTTP POST请求,ios,http,redirect,post,nsurlrequest,Ios,Http,Redirect,Post,Nsurlrequest,我正在开发一个iOS应用程序,它可以与远程WS进行交互。 由于WS的URL可能会不时更改,应用程序应将所有请求发送到一个固定且稳定的URL,该URL负责将它们重定向到WS的实际URL 这是我的密码: - (NSURLRequest *)connection: (NSURLConnection *)connection willSendRequest: (NSURLRequest *)request redirectResponse: (NSURLResponse

我正在开发一个iOS应用程序,它可以与远程WS进行交互。 由于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,是用一个空的主体(没有参数)发送的。看起来原始请求的所有参数都丢失了,即使我使用了原始请求的精确副本

你们觉得怎么样?我如何解决这个问题


谢谢

我认为问题在于,根据HTTP标准,重定向请求应该使用GET方法,因此请求主体是空的


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

lastRequests postBody好吗?::断言([[lastRequest HTTPBody]长度]);如果不使用ARC,则可能必须保留r。您也可以尝试使用copy而不是mutableCopy。