ASIFormDataRequest NSInvalidArgumentException
I'm trying to use ASIFormDataRequest
with the following code:
NSURL *url = [NSURL URLWithString: urlString];
ASIFormDataRequest *request = [ASIHTTPRequest requestWithURL:url];
[request addPostValue:@"json" forKey:@"json"];
[request setDelegate:self];
[request startAsynchronous];
The code keeps crashing at the [request addPostValue:@"json" forKey:@"json"];
line. I've also tried setPostValue:forKey:
with the same result. If I comment out the addPostValue:forKey:
line, the request goes through (I can see it on the server), but of course there is no json data.
I've simplified the problem down by passing in the string json
for the value. That will actually be my json formatted string once I figure out this problem.
Here's the stack trace:
2011-06-28 08:49:29.344 Gleek[26170:207] *** Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '-[ASIHTTPRequest addPostValue:forKey:]: unrecog开发者_JS百科nized 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
)
Thanks
The answer is simple, you have to use:
ASIFormDataRequest *request = [ASIFormDataRequest requestWithURL:url];
And you are using,
ASIFormDataRequest *request = [ASIHTTPRequest requestWithURL:url];
just change that, and it will work.
Always make sure you are initializing your objects with the correct Class consturctor.
精彩评论