zoukankan      html  css  js  c++  java
  • iPhone 调用Web Service 例子(转)

    #import <UIKit/UIKit.h>

    @interface Hello_SOAPViewController : UIViewController 
    {
        IBOutlet UITextField 
    *nameInput;
        IBOutlet UILabel 
    *greeting;
        NSMutableData 
    *webData;
        NSMutableString 
    *soapResults;
        NSXMLParser 
    *xmlParser;
        BOOL 
    *recordResults;
    }

    @property(nonatomic, retain) IBOutlet UITextField 
    *nameInput;
    @property(nonatomic, retain) IBOutlet UILabel 
    *greeting;
    @property(nonatomic, retain) NSMutableData 
    *webData;
    @property(nonatomic, retain) NSMutableString 
    *soapResults;
    @property(nonatomic, retain) NSXMLParser 
    *xmlParser;

    -(IBAction)buttonClick: (id) sender;

    @end

    #import 
    "Hello_SOAPViewController.h"

    @implementation Hello_SOAPViewController

    @synthesize greeting, nameInput, webData, soapResults, xmlParser;

    -(IBAction)buttonClick:(id)sender
    {
        recordResults 
    = FALSE;
        
        NSString 
    *soapMessage = [NSString stringWithFormat:
        
    @"<?xml version=/"1.0/" encoding=/"utf-8/"?>/n"
        
    "<soap:Envelope xmlns:xsi=/"http://www.w3.org/2001/XMLSchema-instance/" xmlns:xsd=/"http://www.w3.org/2001/XMLSchema/" xmlns:soap=/"http://schemas.xmlsoap.org/soap/envelope//">/n"
        
    "<soap:Body>/n"
        
    "<Hello xmlns=/"http://viium.com//">/n"
        
    "<name>%@</name>/n"
        
    "</Hello>/n"
        
    "</soap:Body>/n"
        
    "</soap:Envelope>/n", nameInput.text
        ];
        NSLog(soapMessage);
        
        NSURL 
    *url = [NSURL URLWithString:@"http://viium.com/WebService/HelloWorld.asmx"];
        NSMutableURLRequest 
    *theRequest = [NSMutableURLRequest requestWithURL:url];
        NSString 
    *msgLength = [NSString stringWithFormat:@"%d", [soapMessage length]];
        
        [theRequest addValue: 
    @"text/xml; charset=utf-8" forHTTPHeaderField:@"Content-Type"];
        [theRequest addValue: 
    @"http://viium.com/Hello" forHTTPHeaderField:@"SOAPAction"];
        [theRequest addValue: msgLength forHTTPHeaderField:
    @"Content-Length"];
        [theRequest setHTTPMethod:
    @"POST"];
        [theRequest setHTTPBody: [soapMessage dataUsingEncoding:NSUTF8StringEncoding]];
        
        NSURLConnection 
    *theConnection = [[NSURLConnection alloc] initWithRequest:theRequest delegate:self];
        
        
    if( theConnection )
        {
            webData 
    = [[NSMutableData data] retain];
        }
        
    else
        {
            NSLog(
    @"theConnection is NULL");
        }
        
        [nameInput resignFirstResponder];
        
    }

    -(void)connection:(NSURLConnection *)connection didReceiveResponse:(NSURLResponse *)response
    {
        [webData setLength: 
    0];
    }
    -(void)connection:(NSURLConnection *)connection didReceiveData:(NSData *)data
    {
        [webData appendData:data];
    }
    -(void)connection:(NSURLConnection *)connection didFailWithError:(NSError *)error
    {
        NSLog(
    @"ERROR with theConenction");
        [connection release];
        [webData release];
    }
    -(void)connectionDidFinishLoading:(NSURLConnection *)connection
    {
        NSLog(
    @"DONE. Received Bytes: %d", [webData length]);
        NSString 
    *theXML = [[NSString alloc] initWithBytes: [webData mutableBytes] length:[webData length] encoding:NSUTF8StringEncoding];
        NSLog(theXML);
        [theXML release];
        
        
    if( xmlParser )
        {
            [xmlParser release];
        }
        
        xmlParser 
    = [[NSXMLParser alloc] initWithData: webData];
        [xmlParser setDelegate: self];
        [xmlParser setShouldResolveExternalEntities: YES];
        [xmlParser parse];
        
        [connection release];
        [webData release];
    }

    -(void)parser:(NSXMLParser *)parser didStartElement:(NSString *)elementName namespaceURI:(NSString *) namespaceURI qualifiedName:(NSString *)qName
    attributes: (NSDictionary 
    *)attributeDict
    {
        
    if( [elementName isEqualToString:@"HelloResult"])
        {
            
    if(!soapResults)
            {
                soapResults 
    = [[NSMutableString alloc] init];
            }
            recordResults 
    = TRUE;
        }
    }
    -(void)parser:(NSXMLParser *)parser foundCharacters:(NSString *)string
    {
        
    if( recordResults )
        {
            [soapResults appendString: 
    string];
        }
    }
    -(void)parser:(NSXMLParser *)parser didEndElement:(NSString *)elementName namespaceURI:(NSString*)namespaceURI qualifiedName:(NSString *)qName
    {
        
    if( [elementName isEqualToString:@"HelloResult"])
        {
            recordResults 
    = FALSE;
            greeting.text 
    = soapResults;
            [soapResults release];
            soapResults 
    = nil;
        }
    }


    /*
    Implement loadView if you want to create a view hierarchy programmatically
    - (void)loadView {
    }
    */

    /*
    Implement viewDidLoad if you need to do additional setup after loading the view.
    - (void)viewDidLoad {
        [super viewDidLoad];
    }
    */


    - (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation {
        
    // Return YES for supported orientations
        return (interfaceOrientation == UIInterfaceOrientationPortrait);
    }


    - (void)didReceiveMemoryWarning {
        [super didReceiveMemoryWarning]; 
    // Releases the view if it doesn't have a superview
        
    // Release anything that's not essential, such as cached data
    }


    - (void)dealloc 
    {
        [xmlParser release];
        [super dealloc];
    }
    @end

  • 相关阅读:
    操作系统、存储介质以及电信行业单位换算差异
    Luogu P1659 [国家集训队]拉拉队排练
    AC自动机
    KMP
    Luogu P1470 最长前缀 Longest Prefix
    Luogu P2292 [HNOI2004]L语言
    Manacher算法
    字典(Trie)树
    逆序对
    vs
  • 原文地址:https://www.cnblogs.com/zhwl/p/2391993.html
Copyright © 2011-2022 走看看