AFHTTPSessionManager发送GET请求json格式

 kg9854997 发布于 2023-01-17 10:08

我正在尝试使用AFHTTPSessionManager向Web服务发送请求

这是我的问题:我想发送带有JSON格式参数的URL GET请求.像这样: http://api.mysite.com/v2/json/search ? parameter = {"api_key":"YOUR_API_ KEY","查询":{"perpage":50}}

我已经将AFHTTPSessionManager子类化了.这是我的代码的样子:

    + (MyAPIClient *)sharedClient {
        static MyAPIClient *_sharedClient = nil;
        static dispatch_once_t oncePredicate;
        dispatch_once(&oncePredicate, ^{
            _sharedClient = [[self alloc] initWithBaseURL:[NSURL URLWithString:kBaseURLString]];
        });
        return _sharedClient;
    }

和初始化者:

- (instancetype)initWithBaseURL:(NSURL *)url {

    self = [super initWithBaseURL:url];
    if (!self) {
        return nil;
    }

    self.responseSerializer = [AFJSONResponseSerializer serializer];
    self.requestSerializer = [AFJSONRequestSerializer serializer];
    return self;
}

所以这就是我做的方式:

- (void)sendMyQueryWithSuccess:
       (void(^)(NSURLSessionDataTask *task, id responseObject))success
        andFailure:(void(^)(NSURLSessionDataTask *task, NSError *error))failure{


        NSDictionary *params = @{@"api_key" : kAPIKey,
                                @"query": @{@"perpage": @50}};

        NSString *paramsstring = [[NSString alloc] 
            initWithData:[NSJSONSerialization 
                dataWithJSONObject:params
                options:0
                error:nil]
            encoding:NSUTF8StringEncoding];

        NSString* path = [NSString stringWithFormat:@"search_sale?parameters=%@",paramsstring];

        [self GET:path parameters:nil success:^(NSURLSessionDataTask *task, id responseObject) {
            if (success) {
                success(task, responseObject);
            }
        } failure:^(NSURLSessionDataTask *task, NSError *error) {
            if (failure) {
                failure(task, error);
            }
        }];
    }

我一直这样:

*断言失败 - [AFJSONRequestSerializer requestWithMethod:URLString:parameters:error:],AFNetworking/AFNetworking/AFURLRequestSerialization.m:277

*由于未捕获的异常'NSInternalInconsistencyException'终止应用程序,原因:'无效的参数不满足:URLString'

那么这里的问题是什么?

当我打印"路径"的值时,我得到了我想要的东西:

search?parameters={"api_key":"SOME_API_KEY","query":{"perpage":10}}

非常感谢任何输入

1 个回答
  • 是的你可以:

    NSString *stringCleanPath = [path stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding];
    

    我不得不将它用于parse.com的rest api和AFNetworking,并且完美地完成它.

    2023-01-17 10:10 回答
撰写答案
今天,你开发时遇到什么问题呢?
立即提问
热门标签
PHP1.CN | 中国最专业的PHP中文社区 | PNG素材下载 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有