Ошибка ASIFormDataRequest - PullRequest
       1

Ошибка ASIFormDataRequest

0 голосов
/ 16 сентября 2010
- (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.Я не могу понять, почему я получаю следующую ошибку:

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}

1 Ответ

0 голосов
/ 16 сентября 2010

Если вы добавите точку останова в objc_exception_throw, это должно помочь вам получить больше информации о том, где именно она идет не так (и добавьте обратную трассировку к вашему вопросу, если вы это сделаете).

Предполагая, что ошибка исходит от самого ASIHTTPRequest, он использует NSInvocation для общения со своим делегатом. Я с подозрением отношусь к этой строке из вашего кода:

[request setUploadProgressDelegate: [WTFeedbackView class]];

Я не уверен, что вы можете установить делегат прогресса как класс, я всегда предполагал, что это должен быть реальный объект - возможно, попробуйте удалить его, я подозреваю, что это устранит ошибку.

...