`
wfkbyni
  • 浏览: 85018 次
  • 性别: Icon_minigender_1
  • 来自: 成都
社区版块
存档分类
最新评论

AFNetWorking请求WebService

 
阅读更多
.h

#import <Foundation/Foundation.h>

typedef void(^SuccessBlock)(NSString *dataString);
typedef void(^FialdBlock)(NSString *dataString);

@interface HttpRequest : NSObject

+(void)requestWtihParams:(NSDictionary *)params
        withSuccessBlock:(SuccessBlock)successBlock
          wihtFiladBlock:(FialdBlock)fialdBlock;

@end


.m

#import "HttpRequest.h"
#import "AFNetworking.h"

@implementation HttpRequest

+(void)requestWtihParams:(NSDictionary *)params withSuccessBlock:(SuccessBlock)successBlock wihtFiladBlock:(FialdBlock)fialdBlock{
   
    // 使用af一般请求
    /*AFHTTPRequestOperationManager *manager = [[AFHTTPRequestOperationManager alloc] init];
   
    manager.responseSerializer.acceptableContentTypes = [NSSet setWithObjects:@"application/json", @"text/html",@"text/json",@"text/javascript", nil];
   
    [manager POST:@"http://www.weather.com.cn/data/sk/101010100.html" parameters:params success:^(AFHTTPRequestOperation *operation, id responseObject) {
      
        if (successBlock != nil) {
            successBlock(responseObject);
        }
       
    } failure:^(AFHTTPRequestOperation *operation, NSError *error) {
        if (fialdBlock != nil) {
            fialdBlock(@"error");
        }
    }];
    
     http://192.168.0.100/crmpack/Service/DataServiceJson.asmx
     Printing description of methodName:
     LoginBeforeInit
     Printing description of cmdJson:
     {"parameters":{"versionType":"3"}}
     */
   
    // 使用af封装webservice请求
    // 注意,这里的soapMessage要根据公司服务端定义而来
    NSString *methodName = @"LoginBeforeInit";
    NSString *p = @"{\"parameters\":{\"versionType\":\"3\"}}";
   
    NSString *soapMessage = [NSString stringWithFormat:@"<?xml version=\"1.0\"?><soap:Envelope xmlns:soap=\"http://www.w3.org/2003/05/soap-envelope\" xmlns:xsl=\"http://www.w3.org/1999/XSL/Transform\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns:DataServiceJson=\"http://tempuri.org/\" xsl:version=\"1.0\">"
                             "<soap:Body><DataServiceJson:ExcuteBll>"
                             "<DataServiceJson:bllName>%@</DataServiceJson:bllName>"
                             "<DataServiceJson:cmdJson><![CDATA[%@]]></DataServiceJson:cmdJson>"
                             "</DataServiceJson:ExcuteBll></soap:Body></soap:Envelope>", methodName,p];

    NSURL *url = [NSURL URLWithString:@"http://192.168.0.100/crmpack/Service/DataServiceJson.asmx"];
    NSMutableURLRequest *request = [NSMutableURLRequest requestWithURL:url];
   
    NSString *msgLength = [NSString stringWithFormat:@"%lu", (unsigned long)[soapMessage length]];
   
    [request addValue: @"text/xml; charset=utf-8" forHTTPHeaderField:@"Content-Type"];
    [request addValue: msgLength forHTTPHeaderField:@"Content-Length"];
   
    [request setHTTPMethod:@"POST"];
    [request setHTTPBody: [soapMessage dataUsingEncoding:NSUTF8StringEncoding]];
   
    AFHTTPRequestOperation *operation = [[AFHTTPRequestOperation alloc] initWithRequest:request];
    operation.responseSerializer.acceptableContentTypes = [NSSet setWithObject:@"application/soap+xml"];
    [operation setCompletionBlockWithSuccess:^(AFHTTPRequestOperation *operation, id responseObject) {
       
        if ([responseObject isKindOfClass:[NSData class]]) {
            NSString *str = [[NSString alloc] initWithData:responseObject encoding:NSUTF8StringEncoding];
           
            NSString *startflag = @"<ExcuteBllResult>";
            NSString *endflag = @"</ExcuteBllResult>";
            NSRange startRange = [str rangeOfString:startflag];
            NSRange endRange = [str rangeOfString:endflag];
           
            str = [str substringWithRange:NSMakeRange(startRange.location + startflag.length, endRange.location - startRange.location - startflag.length)];
            NSLog(@"success: %@",str);
           
            successBlock(str);
           
        }
       
       
    } failure:^(AFHTTPRequestOperation *operation, NSError *error) {
        NSLog(@"faild: %@",error);
       
        successBlock(error.domain);
       
    }];
   
    [operation start];
   
}

@end
分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics