字符串拼接的get网络请求方法

本文介绍了一种使用Objective-C实现GET请求的方法,通过创建一个名为Connection的类并遵循NSURLConnectionDataDelegate协议,实现了网络数据的异步获取。文章详细解释了如何构造请求URL、发送请求及处理响应。
<span style="font-family:SimHei;font-size:24px;"></span>
</pre><pre name="code" class="objc"><span style="font-family:SimHei;font-size:24px;"></span>
</pre><pre name="code" class="objc"><span style="font-family:SimHei;font-size:24px;">我们经常要在代码中通过网络请求来获得数据,其中的一种方法就是get方法,下面为异步请求方法:</span>
<span style="font-family:SimHei;font-size:24px;">先要创建一个名字为Connection的继承于nsobject的类;</span>
<span style="font-family:SimHei;font-size:24px;">在.h文件中需要遵循一下<<span style="color: rgb(52, 149, 175);">NSURLConnectionDataDelegate</span>><span style="color: rgb(52, 149, 175);">协议</span></span>
<span style="font-family:SimHei;font-size:24px;">然后写一个类方法组作为接口:</span>

+ (void)connectionWithUrl:(NSString *)strUrl parmaters:(NSDictionary *)parmaters delegate:(id<ConnectionDelegate>)delegate flag:(NSInteger)flag;



// 网址分为两部分,一部分是固定的,一部分是参数

- (void)startRequest:(NSString *)urlStr parmaters:(NSDictionary *)parmaters

{

    NSString *str = @"";

网址的拼接:

    for (NSString *key in [parmaters allKeys]) {

        if ([str length] == 0) {

            str = [NSString stringWithFormat:@"?%@=%@", key, [parmaters objectForKey:key]];

        }

        else

        {

            str = [NSString stringWithFormat:@"%@&%@=%@", str, key, [parmaters objectForKey:key]];

        }

    }

    // 网址不能有空格和汉字

    str = [NSString stringWithFormat:@"%@%@", urlStr, str];

    str = [str stringByReplacingPercentEscapesUsingEncoding:NSUTF8StringEncoding];

//    NSLog(@"%@", str);

    NSURL *url = [NSURL URLWithString:str];

封装为request请求:

    NSMutableURLRequest *request = [NSMutableURLRequest requestWithURL:url];

    [request setHTTPMethod:@"GET"];

建立连接:

    [NSURLConnection connectionWithRequest:request delegate:self];

}

+ (void)connectionWithUrl:(NSString *)strUrl parmaters:(NSDictionary *)parmaters delegate:(id<ConnectionDelegate>)delegate flag:(NSInteger)flag

{

    Connection *con = [[Connection alloc] init];

    con.delegate = delegate;

    con.flag = flag;

    [con startRequest:strUrl parmaters:parmaters];

    [con release];

}

协议执行:

- (void)connection:(NSURLConnection *)connection didReceiveResponse:(NSURLResponse *)response

{

    

}

- (void)connection:(NSURLConnection *)connection didReceiveData:(NSData *)data

{

将数据进行拼接:

    [self.data appendData:data];

}

- (void)connectionDidFinishLoading:(NSURLConnection *)connection

{

用协议将数据返回:

    if ([self.delegate respondsToSelector:@selector(selData:flag:)]) {

        [self.delegate selData:self.data flag:self.flag];

    }

}

- (void)connection:(NSURLConnection *)connection didFailWithError:(NSError *)error

{

    

}


<span style="font-family:SimHei;"></span>
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值