我有客户端代码与服务器通信以创建帐户。通信有效,但未正确接收错误响应。在下面的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)是否已损坏。
答案 0 :(得分:0)
您对AFNetworking
错误处理的理解不完整。错误处理程序用于网络错误。它不会触发HTTP错误代码。这取决于你的应用程序解密和处理。因此,WP_Error
是否返回非2XX HTTP状态,或者只返回某种带有错误信息的JSON对象,AFNetworking
将报告请求成功。
处理应用级协议逻辑不是AFNetworking
的工作。