RESTKit으로 일부 데이터 (특정 웹 사이트의 인증 토큰)를 게시하려고하는데 문제가 있습니다. 메소드를 실행할 때마다 다음과 같이 나타납니다.RESTKit으로 POST 요청을 수행하는 데 문제가 있습니다.
또한 코드에 '호환되지 않는 포인터 유형'경고가 많이 있습니다.
정말 못 생기고 나쁘다. 내 방법은 고쳐주고 도움을 받고 싶다. 버튼을 누를 때 IBAction 메서드 내에서 [self postToken]
을 수행합니다. 다른 파일에서 변수 userAuthToken을 얻고 있는데, RESTKit을 사용하지 않는 POST 요청의 json 응답을 사용하여 설정됩니다. 내가 어떻게 성공적으로 알면 그 POST를 RESTKit으로 변환 할 것이다. "userAuthTokenMethod"메소드는 "postToken"메소드와 같은 파일에 있으며, AppDelegate에서 초기화 된 userAuthToken 객체를 사용하여 전역 변수로 사용할 수 있습니다. 나는 '
//Login.h
#import <Foundation/Foundation.h>
@interface Login : NSObject
@property (nonatomic, copy)NSString *token;
@end
: 여기
//MappingProvider.h
#import <Foundation/Foundation.h>
#import <RestKit/RestKit.h>
@interface MappingProvider : NSObject
+(RKMapping *)tokenMapping;
@end
//MappingProvider.m
#import "MappingProvider.h"
#import <RestKit/RestKit.h>
#import "Login.h"
@implementation MappingProvider
+(RKMapping *)tokenMapping
{
RKObjectMapping *tokenMapping = [RKObjectMapping mappingForClass:[Login class]];
[tokenMapping addAttributeMappingsFromArray:@[@"token"]];
return tokenMapping;
}
@end
은'토큰 '초기화 로그인 파일에 대한 코드입니다 : 여기
- (void)postToken
{
RKObjectMapping *mapping = [RKObjectMapping mappingForClass:[Login class]];
[mapping addAttributeMappingsFromDictionary:@{@"token": @"token"}];
NSIndexSet *statusCodeSet = RKStatusCodeIndexSetForClass(RKStatusCodeClassSuccessful);
RKResponseDescriptor *tokenResponseDescriptor = [RKResponseDescriptor responseDescriptorWithMapping:mapping method:nil pathPattern:nil keyPath:nil statusCodes:statusCodeSet];
RKRequestDescriptor *tokenRequestDescriptor = [RKRequestDescriptor requestDescriptorWithMapping:mapping objectClass:self rootKeyPath:nil method:nil];
[[RKObjectManager sharedManager] addRequestDescriptor:tokenRequestDescriptor];
RKObjectManager *tokenManager = [RKObjectManager managerWithBaseURL:[NSURL URLWithString:@"https://websitetest.com/doctors/find"]];
[tokenManager addResponseDescriptor:tokenResponseDescriptor];
[tokenManager addRequestDescriptor:tokenRequestDescriptor];
[tokenManager postObject:[[self userAuthTokenMethod] userAuthToken] path:nil parameters:nil success:nil failure:nil];
NSURL *tokenURL = [NSString stringWithFormat:@"https://websitetest.com/doctors/find?name=%@&location=%@",nameIDTextField.text, locationTextField.text];
NSMutableURLRequest *tokenRequest = [NSURLRequest requestWithURL:[NSURL URLWithString:tokenURL]];
RKObjectManager *tokenObjectManager = [RKObjectManager managerWithBaseURL:[NSURL URLWithString:tokenURL]];
[tokenObjectManager.HTTPClient setDefaultHeader:@"Auth-Token" value:[[self network360Edge] userAuthToken]];
RKObjectRequestOperation *tokenOperation = [[RKObjectRequestOperation alloc] initWithRequest:tokenRequest responseDescriptors:@[tokenResponseDescriptor]];
NSLog(@"Token being POSTed ==> %@", [[self userAuthTokenMethod] userAuthToken]);
[tokenOperation setCompletionBlockWithSuccess:^(RKObjectRequestOperation *operation, RKMappingResult *result){
NSLog(@"Response for POST request with token ==> %@", [result array]);
}failure:nil];
[tokenOperation start];
}
는 MappingProvider라는 내 매핑 공급자 파일에 대한 코드입니다 아주 RESTKit에 새로 도입되었으며 Objective-C로 다소 새로운 것입니다. (약 한 달 동안 코딩을 해왔습니다.) 내 코드를 고치기위한 모든 도움을 주시면 감사하겠습니다.
을하는 데 도움이
희망. 오히려 빈 문자열을 사용할 수 있습니다. RKRequestMethodPOST/GET으로 ResponseDescriptor에서 요청 메소드를 설정해보십시오. 또한 RKObjectManager는 공유 클래스이므로 RKObjectManager 및 TokenManager에 설명자를 추가하여 동일한 응답 설명자를 두 번 이상 추가합니다. – execv
[RKObjectManager sharedManager]에 tokenRequestDescriptor를 추가하고있는 행을 삭제하십시오. – execv
나는 exctly 같은 문제가있어, 내가 알고 싶은 당신의 문제가 해결 됐어? – Songlin