2012-11-19 26 views
3

我試圖用這個簡單的C#WEBMETHOD溝通調用C#WEBMETHOD:目標C

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

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

NSString *userName = @"test"; 
NSString *post = [NSString stringWithFormat:@"userName=%@", userName]; 
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]; 

NSString *result = [[NSString alloc] initWithData:responseData encoding:NSUTF8StringEncoding]; 
NSLog(@"result = %@", result); 

而不是打印出「驗證」或「錯誤」,我得到:

result = <!DOCTYPE html> 

<html xmlns="http://www.w3.org/1999/xhtml"> 
<head><title> 
</title></head> 
<body> 
<form method="post" action="login" id="form1"> 
<input type="hidden" name="__VIEWSTATE" id="__VIEWSTATE" value="/wEPDwULLTE2MTY2ODcyMjlkZFwRG2UySOwu+02xaz+VP6mmD60UBRkXvHCHxGohOt9d" /> 
<div>  
</div> 
</form> 
</body> 
</html> 

任何人都可以告訴我,如果有什麼明顯的錯誤Web方法或Objective C代碼?謝謝。

回答

3

WebMethods是SOAP我相信,所以不是手動執行它爲什麼不使用API​​來處理SOAP?如wsdl2objc

+0

謝謝,我剛剛進入Obj-C,並從未聽說過這個API,但如果它使整個過程更簡單,它會爲我做。我會去看看。 – Robert

+0

我終於搞定了,雖然我不完全確定。 IK認爲服務器最初設置的方式存在錯誤。儘管如此,我會研究wsdl2objc,看看它是否有助於其他過程,所以我會接受這個答案。 – Robert