ASIFormDataRequest错误

问题描述:

- (void) recordTransaction: (SKPaymentTransaction *) transaction { 
    NSDictionary * receipt = [transaction.transactionReceipt dictionaryFromAppleResponse]; 
    NSDictionary * purchaseInfo = [[NSData dataFromBase64String: [receipt objectForKey: @"purchase-info"]] dictionaryFromAppleResponse]; 

    NSURL * url = [NSURL URLWithString: @"http://..."]; 

    ASIFormDataRequest * request = [ASIFormDataRequest requestWithURL: url]; 
    [request setDelegate: self]; 

    [request setPostValue: [NSNumber numberWithBool: YES] forKey: @"upload"]; 
    [request setPostValue: [[[NSBundle mainBundle] infoDictionary] objectForKey: @"CFBundleDisplayName"] forKey: @"app_id"]; 
    [request setPostValue: [receipt descriptionInStringsFileFormat] forKey: @"receipt"]; 
    [request setPostValue: [purchaseInfo descriptionInStringsFileFormat] forKey: @"purchase_info"]; 

    [WTFeedbackView switchToProgressView]; 
    [request setUploadProgressDelegate: [WTFeedbackView class]]; 

    NSLog(@"Before -startAsynchronous call."); 
    [request startAsynchronous]; 
    NSLog(@"After -startAsynchronous call."); 
} 

的NSData -dictionaryFromAppleResponse返回NSDictionary。我想不通,为什么我收到以下错误:ASIFormDataRequest错误

Error Domain=ASIHTTPRequestErrorDomain Code=10 "NSInvalidArgumentException" UserInfo=0x19eb00 {NSLocalizedFailureReason=+[NSInvocation invocationWithMethodSignature:]: method signature argument cannot be nil, NSUnderlyingError=0x19eae0 "The operation couldn’t be completed. (ASIHTTPRequestErrorDomain error 10.)", NSLocalizedDescription=NSInvalidArgumentException} 

如果您在objc_exception_throw添加断点,应该帮助你究竟往哪里去错误的详细信息(并添加回溯你的问题,如果你这样做)。

假设错误来自ASIHTTPRequest本身,它使用NSInvocation与其委托进行交谈。我怀疑这行从您的代码:

[request setUploadProgressDelegate: [WTFeedbackView class]]; 

我不知道,你可以设置进度委托是一个类,我一直认为它是一个实际的对象 - 也许尝试删除我怀疑它会使错误消失。

+0

可能就是这样。我要研究这个课程并回复你。 – 2010-09-16 01:40:32