OAConsumer API会在接收数据时发生错误
我试图使用OAConsumer API获取数据。 我尝试了下面的代码,它给我一个错误。
-(void)performQuery
{
 OAConsumer *consumer = [[OAConsumer alloc] initWithKey:OAUTH_KEY
                                                  secret:OAUTH_SECRET];
 NSURL *url = [NSURL URLWithString:@"https://api.semantics3.com/v1/products"];
 OAMutableURLRequest *request = [[OAMutableURLRequest alloc] initWithURL:url
                                                               consumer:consumer
                                                                  token:nil   
                                                                  realm:nil  
                                                      signatureProvider:nil]; // use the default method, HMAC-SHA1
  [request setHTTPMethod:@"GET"];
  [consumer release];
  OARequestParameter * qParam = [[OARequestParameter alloc] initWithName:@"q" value:@"{"cat_id":13658,"model":"Satellite"}"];
 NSArray *params = [NSArray arrayWithObjects:qParam, nil];
 [qParam release];
 [request setParameters:params];
 OADataFetcher *fetcher = [[OADataFetcher alloc] init];
 [fetcher fetchDataWithRequest:request
                     delegate:self
            didFinishSelector:@selector(requestDidFinishWithData:)
              didFailSelector:@selector(requestDidFailWithError:)];
  [request release];
}
错误如下:
*** Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '-[OAServiceTicket bytes]: unrecognized selector sent to instance 0x1ed65bf0'
错误发生在这一行上: ** NSString response = [[NSString alloc] initWithData:data encoding:NSUTF8StringEncoding];
  - (void)requestDidFinishWithData:(NSData *)data {
    NSString *response= [[NSString alloc] initWithData:data
                                                   encoding:NSUTF8StringEncoding];
    //here do what you want with the response, I use SBJson to parse it.
    NSLog(@"Request success!%@", response); 
    [responseBody release];
 }
  - (void)requestDidFailWithError:(NSError *)error {
    NSLog(@"Request did fail with error: %@", [error localizedDescription]);
  }
任何想法我在这里做什么?
当它实际上是一个OAServiceTicket对象时,你试图读取NSData。
OAServiceTicket对象具有以下内容:
request = [aRequest retain];
response = [aResponse retain];
data = [aData retain];
didSucceed = success;
所以你的代表必须如下:
- (void)requestDidFinishWithData:(OAServiceTicket *)ticket {
    NSString *response= [[NSString alloc] initWithData:ticket.data
                                              encoding:NSUTF8StringEncoding];
    //here do what you want with the response, I use SBJson to parse it.
    NSLog(@"Request success!%@", response);
    [response release];
}
适用于我。
请检查票是否成功,像这样...
 - (void)fetchingVideoTicket:(OAServiceTicket *)ticket didFinishWithData:(NSData *)data{
if(ticket.didSucceed)
{
  your code...
 }
它似乎在你的情况下,请求是成功的,但没有响应产生,说明你没有包含该请求的所有必需参数,我也遇到了同样的问题,当我试图连接Vimeo,但在我添加回调参数到请求,连接成功并产生响应。 检查是否添加了所有参数。
链接地址: http://www.djcxy.com/p/68087.html