将数据发送回服务器时遇到了一个奇怪的问题。这是我正在使用的代码:
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)
大卫
答案 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
。