码迷,mamicode.com
首页 > 移动开发 > 详细

iOS网络开发-AFNetworking请求asp.net WebService

时间:2015-09-17 01:04:55      阅读:246      评论:0      收藏:0      [点我收藏+]

标签:

看到园子有位朋友需要使用AFN框架请求 WebService,所以就整理了一下,demo下载链接在底部

编写WebService可以看这篇博客 http://www.cnblogs.com/linmingjun/p/4606451.html

//使用AFN请问无参方法

//使用AFN无参
-(void)AfnDemo
{
    
    NSURLRequest *request = [NSURLRequest requestWithURL:[NSURL URLWithString:@"http://115.231.54.166:9090/JobRecordAPP.asmx/QueryWeather"] cachePolicy:NSURLRequestReloadIgnoringLocalCacheData timeoutInterval:20.0f];
    AFHTTPRequestOperation *operation =[[AFHTTPRequestOperation alloc] initWithRequest:request];
    [operation setCompletionBlockWithSuccess:^(AFHTTPRequestOperation *operation, id responseObject) {
        //返回字符串
        NSString *html = operation.responseString;
        NSLog(@"html----%@",html);
        //将返回字符串头去掉:<?xml version=\"1.0\" encoding=\"utf-8\"?>
        NSString *str =@"<?xml version=\"1.0\" encoding=\"utf-8\"?>";
        NSString *strhtml =[html stringByReplacingOccurrencesOfString:str withString:@""];
        //将返回字符串头去掉
        strhtml = [strhtml stringByReplacingOccurrencesOfString:@"<string xmlns=\"http://tempuri.org/\">" withString:@""];
        //将返回的字符串尾去掉
        strhtml = [strhtml stringByReplacingOccurrencesOfString:@"</string>" withString:@""];
        //去掉结尾空格
        NSCharacterSet *whiteSpace = [NSCharacterSet whitespaceAndNewlineCharacterSet];
        strhtml= [[NSString alloc]initWithString:[strhtml stringByTrimmingCharactersInSet:whiteSpace]];
        NSLog(@"无参----%@",strhtml);

    } failure:^(AFHTTPRequestOperation *operation, NSError *error) {
        [self initFailure];
    }];
    [operation start];
}
//使用AFN有参
-(void)AfnDemo2:(NSString *)catObj
{

    NSString *url = @"http://115.231.54.166:9090/JobRecordAPP.asmx/BrowseStatistics?";
//设置参数 NSString
*k_initUrl3 =[url stringByAppendingFormat:@"LoginID=%@",catObj]; NSURLRequest *request = [NSURLRequest requestWithURL:[NSURL URLWithString:k_initUrl3] cachePolicy:NSURLRequestReloadIgnoringLocalCacheData timeoutInterval:20.0f]; AFHTTPRequestOperation *operation =[[AFHTTPRequestOperation alloc] initWithRequest:request]; [operation setCompletionBlockWithSuccess:^(AFHTTPRequestOperation *operation, id responseObject) { NSString *html = operation.responseString; //将返回字符串头去掉:<?xml version=\"1.0\" encoding=\"utf-8\"?> NSString *str =@"<?xml version=\"1.0\" encoding=\"utf-8\"?>"; NSString *strhtml =[html stringByReplacingOccurrencesOfString:str withString:@""]; //将返回字符串头去掉 strhtml = [strhtml stringByReplacingOccurrencesOfString:@"<string xmlns=\"http://tempuri.org/\">" withString:@""]; //将返回的字符串尾去掉 strhtml = [strhtml stringByReplacingOccurrencesOfString:@"</string>" withString:@""]; //去掉结尾空格 NSCharacterSet *whiteSpace = [NSCharacterSet whitespaceAndNewlineCharacterSet]; strhtml= [[NSString alloc]initWithString:[strhtml stringByTrimmingCharactersInSet:whiteSpace]]; NSLog(@"有参----%@",strhtml); } failure:^(AFHTTPRequestOperation *operation, NSError *error) { [self initFailure]; }]; [operation start]; }

技术分享

在使用.Net Web服务编写WebService,如上图我们可以看到返回的数据,前后数据多出了
<?xml version=\"1.0\" encoding=\"utf-8\"?>
<string xmlns=\"http://tempuri.org/\">
</string>
所以在得到json格式的数据的时候,先把前后多余的数据给替换了设置为空。
完整案例数据解析过程 NSString->NSData->NSarray
技术分享
//
-(void)initSetting
{
    NSURLRequest *request = [NSURLRequest requestWithURL:[NSURL URLWithString:@"http://115.231.54.166:9090/JobRecordAPP.asmx/QueryWeather"] cachePolicy:NSURLRequestReloadIgnoringLocalCacheData timeoutInterval:20.0f];
    AFHTTPRequestOperation *operation =[[AFHTTPRequestOperation alloc] initWithRequest:request];
    [operation setCompletionBlockWithSuccess:^(AFHTTPRequestOperation *operation, id responseObject) {
        NSString *html = operation.responseString;
        //将返回字符串头去掉:<?xml version=\"1.0\" encoding=\"utf-8\"?>
        NSString *str =@"<?xml version=\"1.0\" encoding=\"utf-8\"?>";
        NSString *strhtml =[html stringByReplacingOccurrencesOfString:str withString:@""];
        //将返回字符串头去掉
        strhtml = [strhtml stringByReplacingOccurrencesOfString:@"<string xmlns=\"http://tempuri.org/\">" withString:@""];
        //将返回的字符串尾去掉
        strhtml = [strhtml stringByReplacingOccurrencesOfString:@"</string>" withString:@""];
        //去掉结尾空格
        NSCharacterSet *whiteSpace = [NSCharacterSet whitespaceAndNewlineCharacterSet];
        strhtml= [[NSString alloc]initWithString:[strhtml stringByTrimmingCharactersInSet:whiteSpace]];
       
       NSData *data= [strhtml dataUsingEncoding:NSUTF8StringEncoding];
       
        [[ProblemPaperKindObject share] videoWithDict:[data JSONValue]];

    } failure:^(AFHTTPRequestOperation *operation, NSError *error) {
        [self initFailure];
    }];
    [operation start];

}
View Code
技术分享
ProblemPaperKindObject 课程分类模型类

ProblemPaperKindObject.h

#import <Foundation/Foundation.h>

@interface ProblemPaperKindObject : NSObject
/*!
 *  分类信息
 */
@property(nonatomic,strong) NSArray *categorys;
/*!
 *  显示的分类
 */
@property(nonatomic,strong) NSArray *categorysShow;
@property(nonatomic,strong) NSArray *categoryHide;


@property(nonatomic,strong) NSArray *indexsCategorys;
//类别编号
@property (assign,nonatomic) int PRKID;

//根节点
@property (assign,nonatomic) int ParentID;

//名称
@property (copy,nonatomic) NSString *Name;

- (void)videoWithDict:(NSDictionary *)dict;
- (void)videoWithDict2:(NSDictionary *)dict;
- (void)initWithJson:(NSDictionary *)dict;

+(ProblemPaperKindObject *)share;


@end
View Code
技术分享
#import "ProblemPaperKindObject.h"
#import "Common.h"
#import "Config.h"
@implementation ProblemPaperKindObject
+(ProblemPaperKindObject *)share
{
    static ProblemPaperKindObject * _ProblemPaperKindObject_Share=nil;
    static dispatch_once_t onceToken;
    dispatch_once(&onceToken, ^{
        _ProblemPaperKindObject_Share=[[ProblemPaperKindObject alloc] init];
    });
    return _ProblemPaperKindObject_Share;
}
-(void)videoWithDict:(NSArray *)dict
{
    NSMutableArray *categorysTemp=[[NSMutableArray alloc] init];
     for (NSDictionary *dic in dict) {
      //   NSLog(@"videoWithDict---%@",dic[@"Name"]);
         ProblemPaperKindObject *video = [[ProblemPaperKindObject alloc] init];
         video.PRKID = [dic[@"PRKID"] intValue];
         video.ParentID = [dic[@"ParentID"] intValue];
         video.Name = dic[@"Name"];
         [categorysTemp addObject:video];
     }
    self.indexsCategorys=[NSArray arrayWithArray:categorysTemp];
    
    //    [video setValuesForKeysWithDictionary:dict]; // KVC方法使用前提: 字典中的所有key 都能在 模型属性 中找到
    
}
-(void)videoWithDict2:(NSArray *)dict
{
    //分类中分类!
    
    
    NSMutableArray *categorysTemp=[[NSMutableArray alloc] init];
    for (NSDictionary *dic in dict) {
        ProblemPaperKindObject *video = [[ProblemPaperKindObject alloc] init];
        video.PRKID = [dic[@"PRKID"] intValue];
        video.ParentID = [dic[@"ParentID"] intValue];
        video.Name = dic[@"Name"];
         [categorysTemp addObject:video];
            //NSLog(@"PRKID---%@",[dic objectForKey:@"PRKID"]);
        
    }
    self.categorys=[NSArray arrayWithArray:categorysTemp];
    //显示的分类
    NSArray *categoryShowArr=[[Common readLocalString:k_categoryShowPath secondPath:k_categoryShowPath2] JSONValue];
   // NSLog(@"k_DocumentsPath---%@",k_DocumentsPath);
   // NSLog(@"categoryShowArr----%@",categoryShowArr);
    //
   // NSLog(@"categoryShowArr--%@",categoryShowArr);
    
    NSMutableArray *showTempArr=[[NSMutableArray alloc] init];
    for (int i=0; i<categoryShowArr.count; i++) {
        NSPredicate *filter=[NSPredicate predicateWithFormat:@"PRKID=%@",[categoryShowArr objectAtIndex:i]];
        [showTempArr addObjectsFromArray:[self.categorys filteredArrayUsingPredicate:filter]];
    }
    self.categorysShow=[NSArray arrayWithArray:showTempArr];
  //  NSLog(@"categorysShow--%@",self.categorysShow);
    NSPredicate *filter2=[NSPredicate predicateWithFormat:@" NOT (PRKID  in %@)",categoryShowArr];
    self.categoryHide=[self.categorys filteredArrayUsingPredicate:filter2];
    
    
    //    [video setValuesForKeysWithDictionary:dict]; // KVC方法使用前提: 字典中的所有key 都能在 模型属性 中找到
    
}



-(void)initWithJson:(NSDictionary *)dict
{
    [self videoWithDict:dict];
}
@end
View Code
技术分享
JSON.h

//
//  JSON1.h
//  NewsBrowser
//
//  Created by Ethan on 13-11-17.
//  Copyright (c) 2013年 Ethan. All rights reserved.
//

#import <Foundation/Foundation.h>


@interface NSString (JSON)
- (id) JSONValue;
@end

@interface NSData (JSON)
- (id) JSONValue;
@end

@interface NSObject (JSON)
- (NSString *)JSONRepresentation;
@end



JSON.m



//
//  JSON1.m
//  NewsBrowser
//
//  Created by Ethan on 13-11-17.
//  Copyright (c) 2013年 Ethan. All rights reserved.
//



#import "JSON.h"

@implementation NSString (JSON)
- (id) JSONValue {
    NSError *error = nil;
    id obj = [NSJSONSerialization JSONObjectWithData:[self dataUsingEncoding:NSUTF8StringEncoding] options:NSJSONReadingMutableContainers error:&error];
    if (error)
        NSLog(@"%@", [error description]);
    return obj;
}
@end



@implementation NSData (JSON)
- (id) JSONValue {
    NSError *error = nil;
    id obj = [NSJSONSerialization JSONObjectWithData:self options:NSJSONReadingMutableContainers error:&error];
    if (error)
        NSLog(@"%@", [error description]);
    return obj;
}
@end

@implementation NSObject (JSON)
- (NSString *)JSONRepresentation
{
    if ([NSJSONSerialization isValidJSONObject:self]) {
        NSError *error = nil;
        NSData *data=[NSJSONSerialization dataWithJSONObject:self options:NSJSONWritingPrettyPrinted error:&error];
        if (error)
            NSLog(@"%@", [error description]);
        NSString *result=[[NSString alloc]initWithBytes:[data bytes] length:[data length] encoding:NSUTF8StringEncoding];
        return result;
    }
    return @"";
}
@end
View Code

AFNetworking请求WebService Demo下载地址:链接: http://pan.baidu.com/s/1c0i9fS8 密码: 2vt9

iOS网络开发-AFNetworking请求asp.net WebService

标签:

原文地址:http://www.cnblogs.com/linmingjun/p/4814846.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!