使用JSON的RestKit Post方法

时间:2013-11-04 20:11:40

标签: objective-c json restkit

我正在为学校开发iOS应用程序。 我正在使用数据库,所以我可以稍后运行一些统计数据。 我创建了一个Restful Web服务来处理我需要的所有功能,并使用RestKit来访问Web服务。 当我需要从WS检索数据时,我没有任何问题要做,但是当我需要发布信息时,我会收到一些错误,如果可以的话我会帮助你。

我在WS中创建的POST方法是用于向DB添加新的Collection,它没有返回,只需添加它。我正在使用GSON库从JSON转换。我使用netbeans中的“tester”测试并运行良好,所以我猜问题不在Web服务上。我将把所涉及的类的代码和尝试POST对象的方法放在一起。

我有这个课程:收藏

#import <Foundation/Foundation.h>
#import "User.h"
@interface Collection : NSObject
@property NSNumber *idCollection;
@property NSString *name;
@property User *user;
@property NSArray *collectionItens;
@end

这个类:用户

#import <Foundation/Foundation.h>
@interface User : NSObject
@property NSNumber *idUser;
@property NSString *login;
@property NSString *password;
@end

两个班级都只有@syntezise

以下是我试图发布对象的方法:

- (IBAction)createNewCollection:(id)sender
{
NSLog(@"..");
Collection *collection = [[Collection alloc] init];
collection.name = collectionNameTextField.text;
collection.user = [AppDefauts defaultUser];

RKObjectMapping *userMapping = [RKObjectMapping requestMapping];
[userMapping addAttributeMappingsFromArray:@[ @"idUser", @"login", @"password"]];

RKObjectMapping *collectionMapping = [RKObjectMapping requestMapping];
[collectionMapping addAttributeMappingsFromArray:@[ @"idCollection", @"name"]];

[collectionMapping addPropertyMapping:[RKRelationshipMapping relationshipMappingFromKeyPath:@"user" toKeyPath:@"user" withMapping:userMapping]];



RKRequestDescriptor *requestDescriptor = [RKRequestDescriptor requestDescriptorWithMapping:collectionMapping objectClass:[Collection class] rootKeyPath:@"collection" method:RKRequestMethodAny];


RKObjectManager *objectManager = [RKObjectManager managerWithBaseURL:[NSURL URLWithString:@"http://localhost:8080/MTGAppWS/webresources"]];
[objectManager addRequestDescriptor:requestDescriptor];

[objectManager postObject:collection path:@"/Collection"    parameters:nil success:^(RKObjectRequestOperation *operation, RKMappingResult *mappingResult) {
    NSLog(@"Success");

} failure:^(RKObjectRequestOperation *operation, NSError *error) {
    NSLog(@"Error");
}];
}

在Xcode上显示日志并显示错误:

http://pastebin.com/JXCYzF8B

包含新集合的Web服务代码

@Path("Collection")
public class CollectionService
{
}
@Context
private UriInfo context;

/**
 * Creates a new instance of CollectionService
 */
public CollectionService()
{
}
@PUT
@Consumes("application/json")
public void createNewCollection(String content)
{
    CollectionController c= new CollectionController(new SQLController());
    Gson gson = new Gson();
    JsonParser parser = new JsonParser();
    parser.parse(content);
    Collection collection = gson.fromJson(content, Collection.class);
    c.criarNovaCollection(collection);

}

}

修改

发现请求没有“进入”正确的地址。

已经修复了,但现在发生了另一个错误。 (方法不允许)。

错误讯息:http://pastebin.com/99FiNmQZ

1 个答案:

答案 0 :(得分:1)

您正在与之通信的服务器正在为您提供HTML错误页面而不是您期望的JSON:The requested resource () is not available.错误不在您的应用中(除非您要求错误的URL);它在服务器上。