2012-11-19 67 views
0

上的Web服務器是下面的方法:參數傳遞到Web方法

[WebMethod()] 
public static string login(string userName, string password) 
{ 
    if (usernName == "test" && password == "test") 
    { 
     return "validated"; 
    } 
    return "error"; 
} 

我想用下面的目標C代碼連接到它:

NSString *post = [NSString stringWithFormat:@"userName="test"&password="test"]; 
NSData *postData = [post dataUsingEncoding:NSASCIIStringEncoding allowLossyConversion:YES]; 
NSString *postLength = [NSString stringWithFormat:@"%d", [postData length]]; 

NSString *serverURLString = @"http://myURL.aspx/login"; 
NSURL *serverURL = [NSURL URLWithString:serverURLString]; 

NSMutableURLRequest *request = [NSMutableURLRequest requestWithURL:serverURL]; 
[request setHTTPMethod:@"POST"]; 

[request addValue:postLength forHTTPHeaderField:@"Content-Length"]; 
[request setHTTPBody:postData]; 

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

NSLog(@"response data = %@", responseData); 

我被丟失無知的新手地盤,並認爲最後一行會在我的Objective C控制檯中打印出「已驗證」或「錯誤」,但它會返回一個整數(我相信這對於之前完成此操作的人來說顯而易見)。

任何人都可以告訴我如何在我的Objective C日誌中看到webMethod返回值嗎?

-EDIT- 我剛剛注意到,無論我使用的是否是正確的用戶名/密碼組合,或是否使用了正確的用戶名/密碼組合,我都會得到一個200的HTTP響應狀態碼,這也意味着問題在於別處?

回答

1

您可以使用回覆中返回的NSData創建NSString。例如:

NSString *responseString = [[NSString alloc] initWithData:responseData encoding:NSUTF8StringEncoding]; 
+0

謝謝伊恩。該字符串是否應該包含webMethod返回值?它似乎只返回頁面的HTML(儘管我猜這可能意味着我的錯誤是在實際的連接中)。 – Robert

+1

是的,理論上你應該看到「已驗證」或「錯誤」的打印。你得到HTML的事實經常意味着你在返回的服務器端出現錯誤。 –

+0

好的,謝謝。我會研究一下。 – Robert