0

学校向けの iOS アプリを開発しています。データベースを使用しているので、後で統計を実行できます。必要なすべての機能を処理するための Restful Web サービスを作成し、RestKit を使用して Web サービスにアクセスしました。WS からデータを取得する必要がある場合は問題ありませんが、情報を投稿する必要がある場合はエラーが発生するので、できれば助けてください。

WS で作成した POST メソッドは、新しいコレクションを DB に追加するためのもので、戻り値はなく、追加するだけです。JSONから変換するためにGSONライブラリを使用しています。netbeans の「テスター」でテストしたところ、うまく機能したので、問題は 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

そして、このクラス: User

#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

4

1 に答える 1

1

通信しているサーバーが、予期していた JSON ではなく、HTML エラー ページを表示していますThe requested resource () is not available.。エラーはアプリにはありません (間違った URL を要求している場合を除きます)。それはサーバー上にあります。

于 2013-11-05T01:38:26.957 に答える