ASIFormDataRequest NSInvalidArgumentException

时间:2011-06-28 15:54:37

标签: iphone ios post asihttprequest

我正在尝试将ASIFormDataRequest与以下代码一起使用:

NSURL *url = [NSURL URLWithString: urlString];
ASIFormDataRequest *request = [ASIHTTPRequest requestWithURL:url];
[request addPostValue:@"json" forKey:@"json"];
[request setDelegate:self];
[request startAsynchronous];

代码在[request addPostValue:@"json" forKey:@"json"];行崩溃。我也试过setPostValue:forKey:同样的结果。如果我注释掉addPostValue:forKey:行,请求会通过(我可以在服务器上看到它),但当然没有json数据。

我通过传入字符串json来简化问题。一旦我发现了这个问题,那实际上就是我的json格式化字符串。

这是堆栈跟踪:

2011-06-28 08:49:29.344 Gleek[26170:207] *** Terminating app due to uncaught     exception     'NSInvalidArgumentException', reason: '-[ASIHTTPRequest addPostValue:forKey:]: unrecognized     selector sent to instance 0x5024400'
*** Call stack at first throw:
(
0   CoreFoundation                      0x010f85a9 __exceptionPreprocess + 185
1   libobjc.A.dylib                     0x0124c313 objc_exception_throw + 44
2   CoreFoundation                      0x010fa0bb -[NSObject(NSObject) doesNotRecognizeSelector:] + 187
3   CoreFoundation                      0x01069966 ___forwarding___ + 966
4   CoreFoundation                      0x01069522 _CF_forwarding_prep_0 + 50
5   Gleek                               0x00006bab -[ProcedureDefDetailViewController toggleCompletedStatus:] + 1451
6   UIKit                               0x005e44fd -[UIApplication sendAction:to:from:forEvent:] + 119
7   UIKit                               0x00674799 -[UIControl sendAction:to:forEvent:] + 67
8   UIKit                               0x00676c2b -[UIControl(Internal) _sendActionsForEvents:withEvent:] + 527
9   UIKit                               0x006757d8 -[UIControl touchesEnded:withEvent:] + 458
10  UIKit                               0x00608ded -[UIWindow _sendTouchesForEvent:] + 567
11  UIKit                               0x005e9c37 -[UIApplication sendEvent:] + 447
12  UIKit                               0x005eef2e _UIApplicationHandleEvent + 7576
13  GraphicsServices                    0x018b6992 PurpleEventCallback + 1550
14  CoreFoundation                      0x010d9944 __CFRUNLOOP_IS_CALLING_OUT_TO_A_SOURCE1_PERFORM_FUNCTION__ + 52
15  CoreFoundation                      0x01039cf7 __CFRunLoopDoSource1 + 215
16  CoreFoundation                      0x01036f83 __CFRunLoopRun + 979
17  CoreFoundation                      0x01036840 CFRunLoopRunSpecific + 208
18  CoreFoundation                      0x01036761 CFRunLoopRunInMode + 97
19  GraphicsServices                    0x018b51c4 GSEventRunModal + 217
20  GraphicsServices                    0x018b5289 GSEventRun + 115
21  UIKit                               0x005f2c93 UIApplicationMain + 1160
22  Gleek                               0x00002a09 main + 121
23  Gleek                               0x00002985 start + 53
24  ???                                 0x00000001 0x0 + 1
)

由于

1 个答案:

答案 0 :(得分:2)

答案很简单,你必须使用:

ASIFormDataRequest *request = [ASIFormDataRequest requestWithURL:url];

你正在使用,

ASIFormDataRequest *request = [ASIHTTPRequest requestWithURL:url];

只需改变它,它就会起作用。

始终确保使用正确的类构造函数初始化对象。