iOS网络请求简单封装

用惯了AFNetWorking和ASI,也想尝试自己写一个

#import <Foundation/Foundation.h>
#import "MBProgressHUD.h"
#define BASEURL @"http://140.207.46.14:8017/UserInfoWebService.asmx/"
@interface LYNetWorking : NSObject
+ (void)POSTParameters:(NSDictionary *)parameters method:(NSString *)method success:(void (^)(NSDictionary *dic))success animation:(BOOL)animation;
@end
#import "LYNetWorking.h"

@implementation LYNetWorking

+ (void)POSTParameters:(NSDictionary *)parameters method:(NSString *)method success:(void (^)(NSDictionary *dic))success animation:(BOOL)animation{
    if (animation == YES) {
        MBProgressHUD *hud = [MBProgressHUD showHUDAddedTo:[UIApplication sharedApplication].keyWindow animated:YES];
        hud.labelText = @"加载中...";
    }

    NSMutableURLRequest* urlRequest = [[NSMutableURLRequest alloc] initWithURL:[NSURL URLWithString:[NSString stringWithFormat:@"%@%@",BASEURL,method]]];

    [urlRequest setHTTPMethod:@"POST"];

    if (parameters.allKeys) {
        NSString *postStr = @"";
        for (NSString *key in parameters.allKeys) {
            NSString *value = [parameters valueForKey:key];
            if (postStr.length == 0) {
                postStr = [NSString stringWithFormat:@"%@=%@",key,value];
            }else{
                postStr = [postStr stringByAppendingString:[NSString stringWithFormat:@"&%@=%@",key,value]];
            }
        }
        NSData *postData = [postStr dataUsingEncoding:NSUTF8StringEncoding];
        [urlRequest setHTTPBody:postData];
    }

    [NSURLConnection sendAsynchronousRequest:urlRequest
                                       queue:[NSOperationQueue mainQueue]
                           completionHandler:^(NSURLResponse *response, NSData *data, NSError *error){
                               [MBProgressHUD hideAllHUDsForView:[UIApplication sharedApplication].keyWindow animated:YES];
                               NSString *responseString = [[NSString alloc] initWithData:data encoding:NSUTF8StringEncoding];
                               NSString *jsonStr = [self flattenHTML:responseString];
                               NSDictionary *dic = [NSJSONSerialization JSONObjectWithData:[jsonStr dataUsingEncoding:NSUTF8StringEncoding] options:NSJSONReadingMutableContainers error:nil];
                               success(dic);
                           }];
}

//过滤HTML标签
+ (NSString *)flattenHTML:(NSString *)html {
    NSScanner *theScanner;
    NSString *text = nil;
    theScanner = [NSScanner scannerWithString:html];
    while ([theScanner isAtEnd] == NO) {
        [theScanner scanUpToString:@"<" intoString:NULL] ;
        [theScanner scanUpToString:@">" intoString:&text] ;
        html = [html stringByReplacingOccurrencesOfString:
                [NSString stringWithFormat:@"%@>", text]
                                               withString:@""];
    }
    return html;
}

@end

调用非常简单

1.首先到LYNetWorking.h中配置一下你的BASEURL

2.调用POSTParameters方法,method参数是你url的后缀。animation:YES代表使用加载动画。

3.回调NSDictionary *dic,返回的数据已经解析成一个字典了,并且过滤掉XML标签

#import "LYNetWorking.h"

[LYNetWorking POSTParameters:@{@"userName":@"用这里写代码片户名",@"password":@"12345"} 
method:@"OnRegister" success:^(NSDictionary *dic) {

} animation:YES];
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值