RestKit을 통해 POST 요청이 웹 서비스로 전송되면 데이터베이스가 NULL 값을 삽입하려고 시도합니다.
-
20-12-2019 - |
문제
내 웹 서비스에 POST 요청을 하면 다음 오류가 생성됩니다.
TinyTds::오류:값 null을 'bankcd'열에 삽입 할 수 없습니다. Table 'SlotsmasterData.master.bank';열은 널을 허용하지 않습니다.
서버 콘솔에는 다음이 표시됩니다.
위에서 보면 내 Bank 개체의 모든 속성에 대한 값이 존재하지만 'SELECT CAST(SCOPE IDENTITY() ...'가 수행됩니다.
내 앱 코드는 다음과 같습니다.
RKObjectManager *objectManager = [RKObjectManager managerWithBaseURL:[NSURL URLWithString:basePathToWebService]];
RKObjectMapping *bankMapping = [RKObjectMapping mappingForClass:[Banks class]];
NSDictionary *attributeMappingDictionary = [NSDictionary dictionaryWithObjectsAndKeys:
@"BankID", @"bankID",
@"BankCD", @"bankCD",
@"BankName", @"bankName",
@"InsertSourceKey", @"insertSourceKey",
@"UpdateSourceKey", @"updateSourceKey",
@"Active", @"active",
nil];
[bankMapping addAttributeMappingsFromDictionary:attributeMappingDictionary];
RKObjectMapping *bankRequestMapping = [RKObjectMapping requestMapping];
[bankRequestMapping addAttributeMappingsFromDictionary:attributeMappingDictionary];
RKResponseDescriptor *responseDescriptor = [RKResponseDescriptor responseDescriptorWithMapping:bankMapping method:RKRequestMethodAny pathPattern:@"/banks" keyPath:nil statusCodes:RKStatusCodeIndexSetForClass(RKStatusCodeClassSuccessful)];
RKRequestDescriptor *requestDescriptor = [RKRequestDescriptor requestDescriptorWithMapping:bankRequestMapping objectClass:[Banks class] rootKeyPath:nil method:RKRequestMethodAny];
[objectManager addResponseDescriptor:responseDescriptor];
[objectManager addRequestDescriptor:requestDescriptor];
[RKMIMETypeSerialization registerClass:[RKNSJSONSerialization class] forMIMEType:@"text/plain"];
//Post
[objectManager postObject:bank path:@"/banks" parameters:nil success:nil failure:nil];
NULL 값을 삽입하려고 시도하는 이유는 무엇입니까?이 문제를 어떻게 해결합니까?당신의 도움을 주셔서 감사합니다!
해결책
bankRequestMapping
의 역 매핑으로 선언되어야 합니다. bankMapping
.현재로서는 매개변수 이름이 잘못된 것으로 보입니다.Charles를 사용하여 실제로 보내는 내용과 예상한 내용과 일치하는지 확인해야 합니다.
제휴하지 않습니다 StackOverflow