-1

iOS から .NET プラットフォームで作成された Web サービスに http 投稿を行っています。

JSONModelを使用してシリアライズ/デシリアライズし、AFNetworkingを使用して http リクエストを作成しています。

リクエストを送信して、正常にレスポンスを取得できます。ただし、応答データの変数が null の場合、問題が発生します。

Web サービスを呼び出す方法は次のとおりです。

NSDictionary *parameters = @{@"Username":username,@"Password":password};
AFHTTPRequestOperationManager *manager = [AFHTTPRequestOperationManager manager];
[manager POST:@"<my_url>" parameters:parameters success:^(AFHTTPRequestOperation *operation, id responseObject) {
    // Request succeeded.
    LoginResponse *response =[[LoginResponse alloc]initWithDictionary:responseObject error:nil];
    // !!! "response" is null here because of Message on response data is null.
}failure:^(AFHTTPRequestOperation *operation, NSError *error) {
    // Request failed.
}];

これが私のLoginResponse.hファイルです:

@interface LoginResponse : JSONModel

@property (nonatomic, strong) NSString *IsSuccess;
@property (nonatomic, strong) NSString *Message;

@end

これは、Fiddler 経由でリクエストしたときに Web サービスが返すものです。

{"IsSuccess":true,"Message":null}

応答データに null 値があるため、逆シリアル化は機能しません。ファイルから(応答データのメッセージがnullであるため)@property (nonatomic, strong) NSString *Message;行を削除するLoginResponse.hと、逆シリアル化が正常に機能します。

応答データに null 変数があるかどうかは気にしません。逆シリアル化したいだけです。問題が何であるかを見積もることはできません。応答にnull変数がある場合、逆シリアル化が機能しないのはなぜですか?

どんな助けでも大歓迎です。

4

1 に答える 1

0

Messageでオプションを宣言しLoginResponseます。

@property (nonatomic, strong) NSString<Optional>* Message;

詳細については、JSONModel のドキュメントを参照してください。

于 2013-12-16T21:11:35.467 に答える