2010-04-02 18 views
4

我有一個NSURLConnection,它是服務器的一個帖子,但我希望它返回一些小數據,無論它是否成功。NSURLConnection POST也會調用同一個URL的GET

 -(void)submitPost:(NSString *)xml 
    { 
     NSMutableURLRequest *request = [NSMutableURLRequest requestWithURL:[service generateURL]]; 
     NSString *result = (NSString *) CFURLCreateStringByAddingPercentEscapes(kCFAllocatorDefault, (CFStringRef)xml, NULL, CFSTR("?=&+"), kCFStringEncodingUTF8); 
     [request setValue:@"application/x-www-form-urlencoded" forHTTPHeaderField:@"Content-Type"]; 
     [request setHTTPBody:[result dataUsingEncoding:NSUTF8StringEncoding]]; 
     [request setHTTPMethod:@"POST"]; 
     NSURLConnection *theConnection=[[NSURLConnection alloc] initWithRequest:request delegate:self]; 
     if(theConnection) 
     { 
      NSLog(@"Connection success"); 
      [UIApplication sharedApplication].networkActivityIndicatorVisible = YES; 
      [theConnection retain]; 
      failed = NO; 
     } 
     else 
     { 
      NSLog(@"Connection failed"); 
     } 
} 

的問題是,它不僅發個帖子的網址,它也將GET和GET響應返回的數據...我有點糊塗了。我檢查了我的wireshark輸出,這絕對是一個帖子和一個get。

你們認爲什麼?

+0

由於您已經將它連接起來,似乎沒有必要保留連接。 – ma11hew28 2011-05-30 19:19:35

回答

8

URL是否通過重定向來響應POST?您可以實現NSURLConnection委託方法connection:willSendRequest:redirectResponse:以查看是否屬於這種情況(並取消不需要的重定向)。

+0

我剛剛實現了該方法,並且正在調用它。但我不確定這是什麼意思,你能解釋一下嗎?我也不太瞭解文檔。 – kodai 2010-04-02 18:17:59

+0

如果調用該方法,那麼它意味着響應是重定向 - 您可以檢查傳遞給此方法的NSURLRequest參數,以查看它重定向到的位置。重定向網址的要求是您看到的額外GET。如果重定向在您的應用中導致問題,您可以取消或修改此代理方法中的重定向。 – dstnbrkr 2010-04-02 18:56:58