将html参数传递给服务器奇怪的问题

时间:2010-04-11 05:34:06

标签: objective-c iphone

将数据发送回服务器时遇到了一个奇怪的问题。这是我正在使用的代码:

   NSString *theURL =[NSString stringWithFormat:@"http://www.xxx.com/confirm.asp?theID=%@&theName=%@&empID=%@&theComp=%@", theConfirmNum, tmpNBUserRow.userName, labelTxt.text, theID];

   NSLog(@"%@,%@,%@,%@", theConfirmNum, tmpNBUserRow.userName, labelTxt.text, theID);

   NSMutableURLRequest *request = [[[NSMutableURLRequest alloc] init] autorelease];
   [request setURL:[NSURL URLWithString:theURL]];
   [request setHTTPMethod:@"POST"];

   NSError *error;
   NSURLResponse *response;

   NSData *urlData=[NSURLConnection sendSynchronousRequest:request returningResponse:&response error:&error];
   NSString *data=[[NSString alloc]initWithData:urlData encoding:NSUTF8StringEncoding];

   if ([data isEqualToString:@"Done"])

我可以从浏览器运行代码,它可以正常使用我从NSLog输出获得的数据。每个值的NSLog输出都是正确的。但出于某种原因,当我休息时:

if ([data isEqualToString:@"Done"]) 

......它没有回报价值。我检查了每个值的发送内容(再次,它在NSLog输出中是正确的),我发现值“theID”表示“超出范围”。虽然NSLog再次正确地具有它的价值吗?

所以我搜索了论坛,发现了一个类似的问题。我接受了他们的建议并将“RETAIN”添加到“theID”值,如下所示:

theID = [customObjInstance TID];
[theID retain];

然而,这并没有解决问题......

这是控制台NSLog输出:

 [Session started at 2010-04-11 01:31:50 -0400.]
 wait_fences: failed to receive reply: 10004003
 wait_fences: failed to receive reply: 10004003
 nbTxt(5952,0xa0937500) malloc: *** error for object 0x3c0ebc0: double free
 *** set a breakpoint in malloc_error_break to debug
 2010-04-11 01:32:12.270 nbTxt[5952:207] 5122,Rob S.,5122,NB010203

我发送的NSLog值是最后一行“5122,Rob S.,5122,NB010203”

任何帮助都会很棒:o)

大卫

3 个答案:

答案 0 :(得分:2)

您应该在向服务器发送请求后尝试此代码。我认为这应该可以解决你的问题。

NSDictionary* json = nil;
 if (kivaData) {
   json = [NSJSONSerialization
            JSONObjectWithData:kivaData
            options:kNilOptions
            error:nil];
} 

NSLog(@"addfee %@",addfee);
 NSLog(@"JSON %@",json);
[NSString stringWithFormat:
postname=json[@"post_title"],
description=json[@"post_content"],
 sms=json[@"sms"],
 expire=json[@"expire"],
location=json[@"location"],
category=json[@"category"],
 smstext=json[@"sms"],
 totalcomments=json[@"totalcomments"],
warning=json[@"warning"],
 nil];

答案 1 :(得分:0)

已解决!!!

这完全是因为名字“Rob S.”之间的空间。我通过检查空间并在将其发送到服务器之前在其之间添加“ - ”来更正它。

 NSString *tempUN = tmpNBUserRow.userName;
 tempUN = [tempUN stringByReplacingOccurrencesOfString:@" " withString:@"-"];

大卫

答案 2 :(得分:0)

查看stringByAddingPercentEscapesUsingEncoding:中的NSString