2011-11-25 41 views
1

在我的應用程序中,如果用戶輸入了正確的登錄名和密碼,我需要執行驗證。登錄名和密碼都存儲在Web服務器上,所以我必須組織正確的連接到服務器。我是關於http請求和所有這些東西的絕對初學者。其實我下載了ASIHTTPRequest庫,並在昨天將它添加到了我的項目中。我的主要問題是,我現在沒有一個真正的服務器(我只使用一個傳統的URL,後來將被替換爲真正的服務器名稱,但我希望我的代碼已經正確),所以我無法測試自己是否我正在做的事情正確與否。所以我的問題是:檢查用戶登錄數據時的同步請求或異步

1)什麼是最好的方式來組織驗證用戶的登錄名和密碼?我應該使用同步請求還是異步?對於我所知道的同步請求在使用中很少見,因爲他們在執行請求時停止應用程序,但在此事件中確實沒有其他任何事情需要做,所以我有點困惑。你會用什麼?

2)我想通過使用http請求驗證用戶的登錄名和密碼是非常普遍的任務,所以必須有一個通用規則,即web服務器返回什麼樣的數據。我不想發明一個輪子。我應該使用responseString返回的NSString來檢查用戶的登錄名和密碼是否匹配?在這種情況下,服務器通常會返回什麼?我的代碼應該如何?類似於

ASIHTTPRequest *request = [ASIHTTPRequest requestWithURL:someUrl]; 
[request startSynchronous]; 
NSString *response = [request responseString]; 
if ([response isEqualToString:@"login and password match"]) 
    //user enters next screen 
else 
    //user is notified about the error 

還是別的什麼?你會怎麼做?

3)這個要求不僅僅是我需要實現的。稍後,我將使用不同的請求連接到相同的網址。那麼服務器如何知道當前正在使用哪種請求?

我真的需要你的建議。十分感謝提前

回答

4

我試圖回答你的問題,

問:1。用於登錄的同步或異步請求模型?

- >按蘋果的文檔

A synchronous load is built on top of the asynchronous loading code made 
available by the class. The calling thread is blocked while the asynchronous 
loading system performs the URL load on a thread spawned specifically for 
this load request. 

NSURLConnection provides support for downloading the contents of an NSURLRequest in a synchronous manner using the class method sendSynchronousRequest:returningResponse:error:. Using this method is not recommended, because it has severe limitations:

The client application blocks until the data has been completely received, an error is encountered, or the request times out.

Minimal support is provided for requests that require authentication.

There is no means of modifying the default behavior of response caching or accepting server redirects.

當你不知道服務器端執行,這可能涉及:

1.重定向等履行請求的機制。

2.它可能需要一些代理認證或其他類似的東西。

問:2。在這種情況下,服務器通常會返回什麼?

一般來說,Web服務是在服務器端返回XMLJSON因爲你必須解析和使用repsonse實施。 例如響應可能看起來像:

爲XML:

<auth> 
<statusCode>0</statusCode> 
<statusMessage>Login Successful.</statusMessage> 
</auth> 

爲JSON

{ 
    "statusCode" = "0" 
    "statusMessage" = "Login Successful." 
} 

標籤(XML)和鍵(JSON)將取決於你斷絕實現。

3.服務器如何知道當前正在使用什麼樣的要求?

- >您將使用請求將告訴服務器的URL,你在找什麼呢?

例如

http://www.example.com/mywebapp/的getItem ID = 「1」?;

謝謝,

http://www.example.com/mywebapp/的removeItem ID = 「1」?;

大膽路徑項代表您所呼叫的服務。

+0

酷解釋! – Myxtic