AFNetworking错误地解释了WP_Error错误

时间:2015-12-18 03:33:13

标签: objective-c wordpress rest afnetworking

我有客户端代码与服务器通信以创建帐户。通信有效,但未正确接收错误响应。在下面的Objective-C代码中,我使用AFNetworking发送请求。我故意发送了一个无效的电子邮件地址,并期望failure块被执行,但我的代码仍然进入success块。

- (void)createAccount:(NSString *)email
          andUsername:(NSString *)username
          andPassword:(NSString *)password
              success:(SuccessBlock)success
              failure:(FailureBlock)failure
{


    NSDictionary *params = @{
                             @"email": email,
                             @"username" : username,
                             @"password" : password,
                             @"client_id" : @"12345"
                             @"client_secret" : @"abcdef"
                             };

    NSString *requestUrl = [self pathForEndpoint:@"users/new"
                                     withVersion:ServiceRemoteRESTApibbPressExtVersion_1_0];


    [self.api POST:requestUrl parameters:params
           success:^(AFHTTPRequestOperation *operation, id responseObject) {
               success(responseObject); // WENT IN THIS PATH
           }
           failure:^(AFHTTPRequestOperation *operation, NSError *error){

               failure(error); // EXPECTS THIS PATH
           }
     ];
}

在服务器端,我的PHP脚本编码如下。我检查了debug.log并看到了打印的消息:*** users_new_REST_API() email invalid

add_action( 'rest_api_init', function () {
            register_rest_route( 'bbpress_ext/v1', '/users/new', array(
                'methods' => 'POST',
                'callback' => 'users_new_REST_API'
            ) );
        } );

public function users_new_REST_API( $request ) {
        $user_name = $request['username'];
        $password = $request['password'];
        $user_email = $request['email'];
        $client_id = $request['client_id'];
        $client_secret = $request['client_secret'];

        if ( ! is_email( $user_email ) ) {
            error_log('*** users_new_REST_API() email invalid');
            return new WP_Error('email_invalid', 'Invalid email entered.', array( 'status' => 524) );   
        }
}

我无法判断AFNetworking行为不当或Wordpress的REST-API(测试版2)是否已损坏。

1 个答案:

答案 0 :(得分:0)

您对AFNetworking错误处理的理解不完整。错误处理程序用于网络错误。它不会触发HTTP错误代码。这取决于你的应用程序解密和处理。因此,WP_Error是否返回非2XX HTTP状态,或者只返回某种带有错误信息的JSON对象,AFNetworking将报告请求成功。

处理应用级协议逻辑不是AFNetworking的工作。