Ios OAConsumer API在接收数据时出错
我正在尝试使用OAConsumer API获取数据。我尝试了下面的代码,这给我带来了一个错误Ios OAConsumer API在接收数据时出错,ios,objective-c,oauth,google-oauth,Ios,Objective C,Oauth,Google Oauth,我正在尝试使用OAConsumer API获取数据。我尝试了下面的代码,这给我带来了一个错误 -(void)performQuery { OAConsumer *consumer = [[OAConsumer alloc] initWithKey:OAUTH_KEY secret:OAUTH_SECRET]; NSURL *url = [NSURL URLWithString:@"https
-(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响应=[[NSString alloc]initWithData:data
编码:NSUTF8StringEncoding]强>
你知道我在这里干什么吗?请看这张票是否成功,像这样
- (void)fetchingVideoTicket:(OAServiceTicket *)ticket didFinishWithData:(NSData *)data{
if(ticket.didSucceed)
{
your code...
}
在您的情况下,请求似乎成功了,但没有生成响应,表明您没有包含该请求所需的所有参数,我在尝试连接Vimeo时也遇到了相同的问题,但在我将回调参数添加到请求后,连接成功并生成响应。检查是否已添加所有参数。请检查票证是否成功,如下所示
- (void)fetchingVideoTicket:(OAServiceTicket *)ticket didFinishWithData:(NSData *)data{
if(ticket.didSucceed)
{
your code...
}
在您的情况下,请求似乎成功了,但没有生成响应,表明您没有包含该请求所需的所有参数,我在尝试连接Vimeo时也遇到了相同的问题,但在我将回调参数添加到请求后,连接成功并生成响应。检查是否已添加所有参数。当NSData实际上是一个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];
}
对我来说很有用。当NSData实际上是一个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];
}
对我有效。我也有同样的问题。显然,OaserviceKit对象已经不存在了。到目前为止,我还没有找到这个项目的ARCIOS版本,也许所有非ARC的东西都会引起一些问题。你修好了吗?我也有同样的问题。显然,OaserviceKit对象已经不存在了。到目前为止,我还没有找到这个项目的ARCIOS版本,也许所有非ARC的东西都会引起一些问题。你修好了吗?