我想從我的iPhone應用程序訪問一個web服務(用.NET編寫)。Webservice iPhone
這是我的代碼:
-(IBAction)buttonClicked:(id)sender {
NSString *postString =[NSString stringWithFormat:question];
NSLog(postString);
NSURL *url = [NSURL URLWithString: [email protected]"/execute"];
NSMutableURLRequest *req = [NSMutableURLRequest requestWithURL:url];
NSString *msgLength = [NSString stringWithFormat:@"%d", [postString length]];
[req addValue:@"application/x-www-form-urlencoded" forHTTPHeaderField:@"Content-Type"];
[req addValue:msgLength forHTTPHeaderField:@"Content-Length"];
[req setHTTPMethod:@"POST"];
[req setHTTPBody: [postString dataUsingEncoding:NSUTF8StringEncoding]];
[activityIndicator startAnimating];
conn = [[NSURLConnection alloc] initWithRequest:req delegate:self];
if (conn) {
webData = [[NSMutableData data] retain];
}
}
-(void) connection:(NSURLConnection *) connection
didReceiveResponse:(NSURLResponse *) response {
[webData setLength: 0];
}
-(void) connection:(NSURLConnection *) connection
didReceiveData:(NSData *) data {
[webData appendData:data];
}
-(void) connection:(NSURLConnection *) connection
didFailWithError:(NSError *) error {
[webData release];
[connection release];
}
-(void) connectionDidFinishLoading:(NSURLConnection *) connection {
NSLog(@"DONE. Received Bytes: %d", [webData length]);
NSString *theXML = [[NSString alloc]
initWithBytes: [webData mutableBytes]
length:[webData length]
encoding:NSUTF8StringEncoding];
//---shows the XML---
NSLog(theXML);
[theXML release];
[activityIndicator stopAnimating];
if (xmlParser)
{
[xmlParser release];
}
xmlParser = [[NSXMLParser alloc] initWithData: webData];
[xmlParser setDelegate: self];
[xmlParser setShouldResolveExternalEntities:YES];
[xmlParser parse];
[connection release];
[webData release];
}
它進入didReceiveResponse和didReceiveData方法,但下面的文本,而不是獲取的數據我想:
運行時錯誤 body {font-family:「Verdana」; font-weight:normal; font-size: .7em; color:black;} p {字體家庭:「宋體」;字型重量:正常;顏色:黑色;邊距:-5px} B {字體家庭:「宋體」;字型重量:粗體;顏色:黑色;餘量-top: -5px} H2 {font-family:「Verdana」; font-weight:normal; font-size:18pt; color:red } H2 {font-family:「Verdana」; font-weight:正常;字體大小:14pt;顏色:栗色 } 預{字體家庭:「龍力控制檯」;字體大小:.9em} .marker {字體重量:粗體;顏色:黑色;文字修飾:無;} .version {顏色:灰色;} .error {邊距:10px的;} .expandable {文字修飾:下劃線; font-weight:bold;顏色:海軍;光標:手; 光標:手; }
<body bgcolor="white"> <span><H1>Server Error in '/' Application.<hr
寬度= 100initWithBytes:長度:編碼:IZE = 1種 顏色=銀>
<h2> <i>Runtime Error</i> </h2></span> <font face="Arial, Helvetica, Geneva, SunSans-Regular,
無襯線「>
<b> Description: </b>An application error occurred on the
服務器的當前自定義錯誤 此應用程序的設置阻止 遠程查看應用程序錯誤 的詳細信息(對於 安全原因)。但是,可以通過在本地服務器上運行的瀏覽器查看 。
<b>Details:</b> To enable the details of this specific error
消息可以觀看在遠程機器 ,請建立位於的 當前Web應用程序的根目錄中的 "的web.config "配置 文件內的 <的customErrors >標籤。然後,這個 <的customErrors >標籤應 有其"模式"屬性 設置爲"關"。
<table width=100 gcolor="#ffffcc"> <tr> <td> <code><pre>
< - 網絡。config配置文件 - >
<配置> <的System.Web > <的customErrors模式= "關"/> </system.web> < /配置>
</td> </tr> </table> <br> <b>Notes:</b> The current error page you are seeing can be
取代由 修改的自定義錯誤頁面瑩應用程序的 <的customErrors >配置標記 的 "的defaultRedirect "屬性 指向自定義錯誤頁的URL 。
<table width=100 gcolor="#ffffcc"> <tr> <td> <code><pre>
<! - web.config配置文件 - >
<配置> <的System.Web > <的customErrors模式= "僅限遠程" 的defaultRedirect = " mycustompage.htm "/> </system.web> < /配置>
</td> </tr> </table> <br> </body> </html>
任何人都可以幫我嗎?
謝謝!
感謝您的回答,那麼我需要改變什麼? – 2010-08-20 09:10:06
您是否需要明確設置內容長度? – 2010-08-20 11:37:42
我註釋掉了: [req addValue:msgLength forHTTPHeaderField:@「Content-Length」]; [req setHTTPBody:[postString dataUsingEncoding:NSUTF8StringEncoding]]; 和我仍然有相同的錯誤 – 2010-08-20 12:02:07