2012-01-10 74 views
1

過去,我創建了一個iPhone應用程序,它依賴於由php頁面更新的sqlite數據庫。當你訪問PHP頁面時,它打印出一個sqlite數據庫的轉儲文件,應用程序運行各種查詢來更新sqlite數據庫。我以前的應用程序以這種方式運行良好,並會相應更新。我最近嘗試將相同的過程應用於具有更大數據庫的新應用程序。我遇到了問題。不接收來自NSMutableURLRequest的數據(iPhone應用程序同步)

我在做的是發送一些post變量到一個PHP頁面,該頁面可以識別POST並回應sqlite命令來更新數據庫。問題在於頁面打印命令需要幾秒鐘的時間。如果我有頁面打印一些靜態文本,我得到它在我的NSLog(@「響應數據將是==>%@」,結果);命令。如果我必須從我的MySQL數據庫中提取信息,大約需要3-5秒,然後打印(在我的普通瀏覽器上)。但是,當我運行該應用程序時,它表示響應數據將會是==>(null)而不是命令。

任何人都可以闡明可能發生的事情嗎?我知道,當它不打印很多東西,並且它是靜態的時候,它就可以工作。動態部分由於某種原因返回null。

幫助讚賞。

NSMutableURLRequest *request = [[[NSMutableURLRequest alloc] init] autorelease]; 
    [request setURL:[NSURL URLWithString:urlBase]]; 
    [request setHTTPMethod:@"POST"]; 
    [request setTimeoutInterval:60.0]; 
    NSData *post = [myParameters dataUsingEncoding: NSASCIIStringEncoding allowLossyConversion:YES]; 
    NSString *postLength = [NSString stringWithFormat:@"%d",[post length]]; 
    [request setValue:postLength forHTTPHeaderField:@"Content-Length"]; 
    [request setValue:@"application/x-www-form-urlencoded" forHTTPHeaderField:@"Current-Type"]; 
    [request setHTTPBody:post]; 
    [request setHTTPBody:[myParameters dataUsingEncoding:NSUTF8StringEncoding]]; 

    // set headers 
    NSString *contentType = [NSString stringWithFormat:@"text/plain"]; 

    NSHTTPURLResponse *urlResponse = nil; 
    NSError *error = [[NSError alloc] init]; 

    NSData *responseData = [NSURLConnection sendSynchronousRequest:request 
               returningResponse:&urlResponse 
                  error:&error]; 

    NSString *result = [[NSString alloc] initWithData:responseData encoding:NSUTF8StringEncoding]; 
    NSLog(@"Response data is going to be ==> %@", result); 

回答

0

試着去了解這個code..it幫助ü。

NSString *soapMessage=[NSString stringWithFormat:@" YOUR WEB SERVICE CODE",myTxt1.text,myTxt2.text]; 

NSLog(@"%@",soapMessage); 

//-----------create connection 

NSURL *url=[NSURL URLWithString:@"http://your local host webservice url"]; 

NSMutableURLRequest *theRequest=[NSMutableURLRequest requestWithURL:url]; 

NSString *msgLength=[NSString stringWithFormat:@"%d",[soapMessage length]]; 

// ----------發送請求

[theRequest addValue: @"text/xml; charset=utf-8" forHTTPHeaderField:@"Content-Type"]; 

[theRequest addValue: @"http://tempuri.org/AutenticateUser" forHTTPHeaderField:@"SOAPAction"]; 

[theRequest addValue: msgLength forHTTPHeaderField:@"Content-Length"]; 

[theRequest setHTTPMethod:@"POST"]; 

[theRequest setHTTPBody: [soapMessage dataUsingEncoding:NSUTF8StringEncoding]]; 

NSURLConnection *theConnection=[[NSURLConnection alloc]initWithRequest:theRequest delegate:self]; 

// [activityIndi​​cator startAnimating];

if (theConnection) 

{ 
webData = [[NSMutableData data] retain]; 
} 
else 
{ 
NSLog(@"theConnection is NULL"); 
} 
+0

我曾嘗試用你的代碼,但即使實現它之後,我沒有從我的網頁上,而不是現在連靜態的東西得到任何數據備份。在我收到數據之前,這只是我想的超時問題。現在,它甚至不會給我我的靜態內容。 – Kevin 2012-01-11 13:47:27

+0

你必須在輸出窗口中檢查NSLog返回的數據。或者粘貼你的output.so我可以檢查。輸出應該是ur soap的結果。 – 2012-01-12 05:07:26

相關問題