如何通过AFNetworking进行GET请求?

时间:2016-01-06 17:33:30

标签: ios afnetworking-2 afnetworking-3

我将目录AFNetworkingUIKit+AFNetworking添加到项目经理。 我使用最新的库3.0.4

在我的班级文件AFNetworking.h中导入文件.m后。 我找到了很多如何向url发出请求的示例,但信息已经过时了。

如何对URL进行GET请求并从服务器获取数据? 现在已删除功能AFHTTPRequestOperation

这是第一次使用xcode中的库,我是初学者。

5 个答案:

答案 0 :(得分:78)

对于AFNetworking 3.x:

AFHTTPSessionManager *manager = [AFHTTPSessionManager manager];
[manager GET:@"http://example.com/resources.json" parameters:nil progress:nil success:^(NSURLSessionTask *task, id responseObject) {
    NSLog(@"JSON: %@", responseObject);
} failure:^(NSURLSessionTask *operation, NSError *error) {
    NSLog(@"Error: %@", error);
}];

答案 1 :(得分:1)

AFHTTPClient *httpClient = [[AFHTTPClient alloc] initWithBaseURL:[NSURL URLWithString:@"http://google.com/"]];
NSMutableURLRequest *request = [httpClient requestWithMethod:@"GET"
                                                        path:@"http://google.com/api/pigs/"
                                                  parameters:nil];

AFHTTPRequestOperation *operation = [[AFHTTPRequestOperation alloc] initWithRequest:request];

[httpClient registerHTTPOperationClass:[AFHTTPRequestOperation class]];

[operation setCompletionBlockWithSuccess:^(AFHTTPRequestOperation *operation, id responseObject) {

    // Print the response body in text
    NSLog(@"Response: %@", [[NSString alloc] initWithData:responseObject encoding:NSUTF8StringEncoding]);

} failure:^(AFHTTPRequestOperation *operation, NSError *error) {
    NSLog(@"Error: %@", error);
}];
[operation start];

=============================================

您也可以使用AFHTTPRequestOperation:

NSOperationQueue *networkQueue = [[NSOperationQueue alloc] init];

networkQueue.maxConcurrentOperationCount = 5;

NSURL *url = [NSURL URLWithString:@"https://example.com"];

NSURLRequest *request = [NSURLRequest requestWithURL:url];

AFHTTPRequestOperation *operation = [[AFHTTPRequestOperation alloc] 
initWithRequest:request];

[operation setCompletionBlockWithSuccess:^(AFHTTPRequestOperation *operation, id responseObject) {


    NSString *string = [[NSString alloc] initWithData:responseObject encoding:NSUTF8StringEncoding];

    NSLog(@"%@", string);

} failure:^(AFHTTPRequestOperation *operation, NSError *error) {

    NSLog(@"%s: AFHTTPRequestOperation error: %@", __FUNCTION__, error);
}];
[networkQueue addOperation:operation];

答案 2 :(得分:0)

please try below answer.
+(void)callAFWS:(NSDictionary *)dict withURL:(NSString *)strUrl 
withToken:(NSString *)strToken withBlock:(dictionary)block
{
AFHTTPSessionManager *manager = [[AFHTTPSessionManager alloc]initWithSessionConfiguration:[NSURLSessionConfiguration defaultSessionConfiguration]];

[manager.requestSerializer setValue:strToken forHTTPHeaderField:@"Authorization"];

[manager GET:[NSString stringWithFormat:@"%@/%@",WebserviceUrl,strUrl] parameters:dict progress:nil success:^(NSURLSessionDataTask * _Nonnull task, id  _Nullable responseObject) {
    if (!responseObject)
    {
        NSMutableDictionary *dict = [[NSMutableDictionary alloc] init];
        [dict setObject:ServerResponceError forKey:@"error"];
        block(responseObject);
        return ;
    }
    block(responseObject);
} failure:^(NSURLSessionDataTask * _Nullable task, NSError * _Nonnull error) {
    NSMutableDictionary *dict = [[NSMutableDictionary alloc] init];
    [dict setObject:ServerResponceError forKey:@"error"];
    block(dict);
}];
}

答案 3 :(得分:-1)

使用AFNetworking 3.0,您需要按以下方式提出请求:

NSURL * urlStr = [NSURL URLWithString:strURL];

NSDictionary *dictParameters = @{@"user[height]": height,@"user[weight]": weight};

AFHTTPSessionManager * manager = [AFHTTPSessionManager manager];


[manager GET:url.absoluteString parameters:dictParameters success:^(NSURLSessionTask *task, id responseObject) {
    NSLog(@"PLIST: %@", responseObject);

} failure:^(NSURLSessionTask *operation, NSError *error) {
    NSLog(@"Error: %@", error);

}];

答案 4 :(得分:-1)

(void)postDatabyAF{

NSString *url;

NSDictionary *dict;

AFHTTPRequestOperationManager *manager = [AFHTTPRequestOperationManager manager];

manager.responseSerializer = [AFJSONResponseSerializer serializer];

manager.responseSerializer = [AFJSONResponseSerializer serializerWithReadingOptions:
                              NSJSONReadingAllowFragments];

[manager POST:url parameters:dict success:^(AFHTTPRequestOperation * _Nonnull operation, id  _Nonnull responseObject) {

    NSLog(@" operation.responseData  %@",operation.responseData);
    NSLog(@" operation.response %@",operation.response);
    NSLog(@"statusCode %ld",operation.response.statusCode);

} failure:^(AFHTTPRequestOperation * _Nullable operation, NSError * _Nonnull error) {

    if (error) {

    }
    else{


    }
}];

}