NSURLConnection在IOS中创建自定义类

时间:2015-04-03 11:44:35

标签: ios iphone

在我的项目中有超过6个有NSURLConnection的课程,我觉得必须创建一个NSURLConnection课程并将这个课程重新用于所有课程但是我不知道如何做到这一点可以帮助我如果您事先得到所有的回复,请给我一些例子

.h
        #import <Foundation/Foundation.h>

        @interface Connections : NSObject<NSURLConnectionDataDelegate>
        {
            NSArray * array;
            NSMutableData * data;
        }

.m
    #import "Connections.h"

    @implementation Connections


    -(void)connection:(NSURLConnection *)connection didReceiveResponse:(NSURLResponse *)response
    {
        data = [[NSMutableData alloc]init];
    }
    -(void)connection:(NSURLConnection *)connection didReceiveData:(NSData *)theData
    {
        [data appendData:theData];
    }
    -(void)connectionDidFinishLoading:(NSURLConnection *)connection
    {
        array = [NSJSONSerialization JSONObjectWithData:data options:0 error:nil];
    }
    -(void)connection:(NSURLConnection *)connection didFailWithError:(NSError *)error
    {
        NSLog(@"Failed");
    }
    @end

1 个答案:

答案 0 :(得分:0)

您应该继承“NSObject”类,在其中编写NSURLConnections及其响应处理代码。

使用自定义委托将您将获得的数据作为对各个viewControllers的响应传递。

OR

如果您更喜欢使用第三方方式: -

FOLLOW THIS LINK

此库使服务器通信和接收响应变得更加容易。

<强> ADDITIONS: - 在创建NSObject类时,首先应编写一个方法,以便可以传递参数以启动连接:如下所示

+(void)makeWebRequestWithParameters:(NSDictionary *)parameters forService:(NSString *)service {

    requestParameters = [NSMutableString new];

    for (NSString * keys in parameters.allKeys) {
        [requestParameters appendString:[NSString stringWithFormat:@"%@=%@&",keys,[parameters objectForKey:keys]]];
    }

    NSString * myString = [self removeand:requestParameters];

    NSLog(@"REQUEST PARAMETERS: %@", requestParameters);

    NSData *postData = [myString dataUsingEncoding:NSASCIIStringEncoding allowLossyConversion:YES];
    NSString *postLength = [NSString stringWithFormat:@"%lu",(unsigned long)[postData length]];
    request = [[[NSMutableURLRequest alloc] init] autorelease];

    [request setURL:[NSURL URLWithString:[NSString stringWithFormat:@"%@/%@",BASE_URL,service]]];

    [request setHTTPMethod:@"POST"];
    [request setValue:postLength forHTTPHeaderField:@"Content-Length"];
    [request setValue:@"application/x-www-form-urlencoded" forHTTPHeaderField:@"Content-Type"];
    [request setHTTPBody:postData];

    NSURLConnection *conn = [[NSURLConnection alloc]initWithRequest:request delegate:self];
    [conn start];
}

然后使用“NSURLConnection”代表来处理您将获得的数据

在任何视图控制器中调用上述方法,如:

[connection makeWebRequestWithParameters:parameters forService:optional];

不要忘记在NSObject类的“.h”文件中声明“makeWebRequest ...”方法