我正在尝试从我的iPhone应用程序访问web服务(用.NET编写)。
这是我的代码:
-(IBAction)buttonClicked:(id)sender {
NSString *postString =[NSString stringWithFormat:question];
NSLog(postString);
NSURL *url = [NSURL URLWithString: address+@"/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;颜色:黑色;} p {font-family:“Verdana”; font-weight:normal; color:black; margin-top:-5px} b {font-family:“Verdana”; font-weight:bold; color:black; margin-top: -5px} H1 {font-family:“Verdana”; font-weight:normal; font-size:18pt; color:red } H2 {font-family:“Verdana”; font-weight:normal; font-size:14pt; color:maroon } pre {font-family:“Lucida Console”; font-size:.9em} .marker {font-weight:bold; color:black; text-decoration:none;} .version {color:grey;} .error {margin-bottom:10px;} .expandable {text-decoration:underline; 字体重量:粗体;颜色:海军; 光标:手; }
<body bgcolor="white"> <span><H1>Server Error in '/' Application.<hr
宽度= 100initWithBytes:长度:编码:IZE = 1 颜色=银&GT;
<h2> <i>Runtime Error</i> </h2></span> <font face="Arial, Helvetica, Geneva, SunSans-Regular,
sans-serif“&gt;
<b> Description: </b>An application error occurred on the
服务器。当前的自定义错误 此应用程序的设置阻止 应用程序错误的详细信息 远程观看(for 安全原因)。但是,它可以 被浏览器上运行的浏览器查看 本地服务器机器。
<b>Details:</b> To enable the details of this specific error
消息可在远程查看 机器,请创建一个 &LT;&的customErrors GT;标签内的 “web.config”配置 文件位于根目录下 当前的Web应用程序。这个 &LT;&的customErrors GT;然后标签应该 有它的“模式”属性 设为“关”。
<table width=100 gcolor="#ffffcc"> <tr> <td> <code><pre>
&lt;! - Web.Config配置文件 - &GT;
&LT;结构&gt; &LT;&的System.Web GT; &lt; customErrors mode =“Off”/&gt; &LT; /system.web> &LT; /结构&gt;
</td> </tr> </table> <br> <b>Notes:</b> The current error page you are seeing can be
由自定义错误页面替换 修改 “defaultRedirect”属性 应用程序的 &LT;&的customErrors GT;配置标签 指向自定义错误页面 URL。
<table width=100 gcolor="#ffffcc"> <tr> <td> <code><pre>
&lt;! - Web.Config配置文件 - &GT;
&LT;结构&gt; &LT;&的System.Web GT; &lt; customErrors mode =“RemoteOnly” 的defaultRedirect = “mycustompage.htm”/&GT; &LT; /system.web> &LT; /结构&gt;
</td> </tr> </table> <br> </body> </html>
有人可以帮助我吗?
谢谢!
答案 0 :(得分:0)
您收到服务器端错误。检查您从iPhone应用程序发送到Web服务的请求参数。
答案 1 :(得分:0)
实际邮件长度与“Content-Length”标题中设置的长度之间可能存在冲突。
一个是通过获取字符串的长度来设置的,另一个是通过使用UTF8编码获取数据来设置的。