1

我正在尝试启动此操作,但它甚至没有进入 NSLOG。我猜它与我的 stringUrl 相关,也许它不应该像这样工作?

这是我的代码:

NSString *stringUrl = [[NSString alloc]initWithFormat:@"http://example.com/add_user.php?username=%@&password=%@&country=%@&email=%@",[self.usernameTextField text],[self.passwordTextField text], countrySelected, [self.emailTextField text]];

NSURL *url = [NSURL URLWithString:stringUrl];
NSURLRequest *request = [NSURLRequest requestWithURL:url];

AFJSONRequestOperation *operation = [AFJSONRequestOperation JSONRequestOperationWithRequest:request success:^(NSURLRequest *request, NSHTTPURLResponse *response, id JSON) {
    NSDictionary *dict = JSON;
    NSLog(@"IP Address: %@", [JSON valueForKeyPath:@"item"]);
} failure:nil];

[operation start];

编辑:这是我从失败块中得到的:

错误域=AFNetworkingErrorDomain 代码=-1016“预期的内容类型 {(“text/json”、“application/json”、“text/javascript”)},得到了 text/html”UserInfo=0xa2b4300 {NSLocalizedRecoverySuggestion={“type”: "1","item": "用户添加成功。"} , AFNetworkingOperationFailingURLRequestErrorKey=http://EXAMPLE.com/add_user.php?username=aaasafasfasf&password=aaa&country=Angola&email=aaaasfasfasfasfasf>, NSErrorFailingURLKey= http://EXAMPLE.com /add_user.php?username=aaasafasfasf&password=aaa&country=Angola&email=aaaasfasfasfasfasf , NSLocalizedDescription=预期的内容类型 {( "text/json", "application/json", "text/javascript" )}, 得到 text/html,AFNetworkingOperationFailingURLResponseErrorKey=}

4

1 回答 1

4

为了进入 AFJSONRequestOperation 的成功块,您还需要遵守服务器要发送的正确内容类型。当前,您的服务器正在返回text/html内容类型作为响应,因此它进入了失败块。

正如故障块消息所暗示的那样,将返回的内容类型更改为text/jsonapplication/json,因为您正在使用 AFJSONRequestOperation。

对于 PHP,您可以按照以下问题中的答案更改返回的内容类型:如何在 php 中更改内容类型?

您只需在现有标题行下方添加一行:

header('Content-Type: text/json');

无需替换现有的标题行,除非有标题行将内容类型设置为text/jsonapplication/json以外的其他内容。

于 2013-06-30T16:22:16.360 回答