我正在創建一個登錄頁面,用戶可以使用它們提供的相同用戶名和密碼進行登錄。如何創建登錄應用程序?
我有權發佈用戶使用PHP服務器提供的用戶名密碼廣告。 PHP頁面將驗證服務器的詳細信息並將我的答案發回給我,並且我必須獲取該答案並允許用戶登錄。
我曾嘗試下面的代碼,但它不工作:
我正在創建一個登錄頁面,用戶可以使用它們提供的相同用戶名和密碼進行登錄。如何創建登錄應用程序?
我有權發佈用戶使用PHP服務器提供的用戶名密碼廣告。 PHP頁面將驗證服務器的詳細信息並將我的答案發回給我,並且我必須獲取該答案並允許用戶登錄。
我曾嘗試下面的代碼,但它不工作:
dataWithContentsOfURL
沒有做什麼,你認爲它。它不會執行HTTP請求等。它只會通過URL訪問本地文件系統中的文件。所以你實際上並沒有用你的代碼執行HTTP請求。
NSURLConnection
是做HTTP iOS上規範的API。
NSURL *url = [NSURL URLWithString:@"http://yoursite.com/iphone/validateiphone.php"];
NSString *post = [NSString stringWithFormat:@"fname=%@&lname=%@",firstname,lastname];
NSMutableURLRequest *request = [[NSMutableURLRequest alloc] initWithURL:url];
[request setHTTPBody:[post dataUsingEncoding:NSUTF8StringEncoding]];
[request setHTTPMethod:@"POST"];
[NSURLConnection connectionWithRequest:req delegate:self];
然後,你需要的,如果該請求不能implemenet各種NSURLConnectionDelegate方法來得到通知,當請求完成後,等
另外,使用線程同步請求。不要在主線程上執行同步請求,它會阻止你的用戶界面。
dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), ^{
// ....
NSHTTPURLResponse *response = nil
NSError *error = nil;
NSData *responseBody = [NSURLConnection sendSynchronousRequest:req
returningResponse:&response
error:&error];
});
我真的覺得你可能需要檢查一下你的網址。只需在Mac/PC上使用您的瀏覽器來驗證您是否在調用正確的URL。 您的字符串追加提供了以下
http://yoursite.com/iphone/validateiphone.phpfname="firstName"&lname="lastName"
其中「名字」和「姓氏」是你傳遞的參數。我認爲,這是一個不正確的PHP請求,你缺少的查詢參數或「? 」。您可能需要附加一個「?」在那裏的某個地方。因此,也許
http://yoursite.com/iphone/validateiphone.php?fname="firstName"&lname="lastName"
然後確保你登出dataURL & SERVEROUTPUT的值,以確保你找回你所期望的。
編輯:
從您的評論你可能沒有明白我所要表達的。測試您正在使用的URL實際上是通過將其粘貼到瀏覽器地址欄並查看源代碼(如果頁面上未顯示任何內容)來工作的。 其次,您應該將代碼更改爲如下所示,以便您可以在調試輸出窗口中看到發生了什麼。
NSLog(@"URL sending Request to: %@", hostStr); //Log the address you are setting as the url to ensure that it is correct. (You should be able to copy this into your browser and get a result if it is correct.
NSData *dataURL = [NSData dataWithContentsOfURL:[NSURL URLWithString:hostStr]];
NSLog(@"dataURL value:%@", dataURL): //this will let yo know if there is anything in, also insert a breakpoint here and verify that dataURL is not equal to 0x0 (or nil).
NSString *serverOutput = [[NSString alloc]initWithData:dataURL encoding:NSASCIIStringEncoding];
NSLog(@"serverOutput as NSString: %@", serverOutput);//again breakpoint this and make sure serverOutput is not 0x0.
我發送所有細節的正確通過網址...但我無法獲取回聲發送或消息發送的PHP文件....... nd我沒有得到任何數據在我的dataURL和serverOutput .. ...請幫助我..謝謝 – Nilesh
@NileshJoshi是在您的Mac/PC上的瀏覽器中工作的網址? (您可能需要查看源代碼以確保它在工作,如果沒有任何內容呈現給您的瀏覽器窗口)。 –
@NileshJoshi同時添加我在上面的答案中放入的NSLog,特別是關於hostStr輸出的那個。如果hostStr的URL是正確的,那麼你應該能夠粘貼NSLog打印出來的變量的輸出到你的瀏覽器地址欄中,它應該可以工作,也就是說,如果你的PHP腳本是在第一位工作的話。先驗證一下。 –
檢查reply.i.e打印SERVEROUTPUT string.Then檢查追加「後」時,你是否得到了正確的答覆或不 – Tendulkar
服務器字符串爲「主機」的字符串,你不缺「?」字符?如果我沒有記錯的話,你的hostString看起來像: http://yoursite.com/iphone/validateiphone.phpfname=something&lastname=somethingelse代替http://yoursite.com/iphone/validateiphone.phpf?name=something&lastname= somethingelse – Maggie
沒有什麼是SERVEROUTPUT發現........ – Nilesh