2010-03-07 96 views
1

我有一個iPhone應用程序應該發送POST數據到我的服務器上註冊設備在MySQL數據庫中,所以我們可以發送通知等等。它將它的唯一標識符,設備名稱,令牌以及其他一些小的東西(如密碼和用戶名)作爲POST請求發送到我們的服務器。問題在於有時服務器沒有收到數據。我的意思是,它不僅僅是接收POST輸入的空白​​值,而是根本不接收任何後期數據。我將所有POST輸入記錄到我的服務器中,記錄到某些日誌文件中,並且當依賴於來自設備的POST數據的腳本失敗時(檢測不到數據),我注意到它是因爲沒有發送POST數據。這是服務器上的一個問題,就像拒絕數據或者其他事情一樣,還是必須在客戶端?什麼可能導致這個?POST數據沒有從iPhone收到

iPhone代碼:

NSString *post = [NSString stringWithFormat:@"deviceIdentifier=%@&deviceToken=%@",deviceIdentifier,deviceToken]; 
NSData *postData = [post dataUsingEncoding:NSASCIIStringEncoding allowLossyConversion:NO]; 
NSString *postLength = [NSString stringWithFormat:@"%d", [postData length]]; 
NSMutableURLRequest *request = [[[NSMutableURLRequest alloc] init] autorelease]; 
[request setURL:[NSURL URLWithString:@"http://website.com/RegisterScript.php"]]; 
[request setHTTPMethod:@"POST"]; 
[request setValue:postLength forHTTPHeaderField:@"Content-Length"]; 
[request setValue:@"application/x-www-form-urlencoded" forHTTPHeaderField:@"Content-Type"]; 
[request setValue:@"MyApp-V1.0" forHTTPHeaderField:@"User-Agent"]; 
[request setHTTPBody:postData]; 
NSData *urlData = [NSURLConnection sendSynchronousRequest:request returningResponse:nil error:nil]; 
NSString *response = [[NSString alloc] initWithData:urlData encoding:NSASCIIStringEncoding]; 

回答

1

我建議使用ASIHTTPRequest這是HTTP通信的大框架。它將處理通訊異步,因此如果通訊需要很長時間,您不會冒險iPhone操作系統停止應用程序。還有一些方法可以更容易地創建要發送的表單數據。