IOS學習筆記26—HTTP操作之ASIHTTPRequest(二)

來源:互聯網
上載者:User

利用ASIHTTPRequest也可以向伺服器提交請求參數,今天就做一個登入的例子,用戶端發送XML請求,然後得到服務端的響應,響應的結果是返回XML字串。直接上代碼吧,代碼中有詳細注釋。

首先在.h檔案中做如下聲明:

#import <UIKit/UIKit.h>@interface ViewController : UIViewController@property (retain,nonatomic) UIActivityIndicatorView *indicator;@property (retain, nonatomic) IBOutlet UITextField *userNameTextField;@property (retain, nonatomic) IBOutlet UITextField *passwordTextField;- (IBAction)login:(id)sender;@end

然後是.m實現檔案(這裡只列出了主要代碼部分):

//使用非同步請求並更新UI- (IBAction)login:(id)sender {    //彈出載入提示框    [self showToast:@"正在登陸..."];        /*執行登陸請求     服務端為跑在Tomcat上的一個Servelet     請求方式採用xml,格式如下:     <Document>        <User id ="xxx"  password=”xxx”/>     </Document>     請求結果返回一個XML字串,這裡的伺服器位址我省略了,因為用的是以前一個項目的伺服器,這裡沒法公開     */    __block ASIHTTPRequest *request = [[ASIHTTPRequest alloc] initWithURL:[NSURL URLWithString:@"http://xxx/server/Login"]];        //構建可變字串請求    NSMutableString *requestXML = [[NSMutableString alloc] init];    [requestXML appendString:@"<Document>"];    [requestXML appendString:@"<User id=\""];    [requestXML appendString:self.userNameTextField.text];    [requestXML appendString:@"\" "];    [requestXML appendString:@"password=\""];    [requestXML appendString:self.passwordTextField.text];    [requestXML appendString:@"\"/>"];    [requestXML appendString:@"</Document>"];        //將NSString類型轉換成NSData類型,後面的參數為編碼類別型,這裡是UTF-8    NSData *requestData = [requestXML dataUsingEncoding:NSUTF8StringEncoding];    //使用ASIHTTPRequest中的自訂請求參數的方法    [request appendPostData:requestData];    //佈建要求方式    [request setRequestMethod:@"POST"];        //請求執行完會調用block中的代碼    [request setCompletionBlock:^{        NSLog(@"Success");        NSLog(@"%@",[request responseString]);                [self.indicator stopAnimating];        [alertView dismissWithClickedButtonIndex:0 animated:YES];        [self.indicator release];        [alertView release];    }];        //如果出現異常會執行block中的代碼    [request setFailedBlock:^{        NSLog(@"Failed");        [self.indicator stopAnimating];        [alertView dismissWithClickedButtonIndex:0 animated:YES];        [self.indicator release];        [alertView release];    }];    [request startAsynchronous];        [request release];    }//構建自訂彈出提示框-(void)showToast:(NSString*) message{    alertView = [[UIAlertView alloc] initWithTitle:message message:nil delegate:self  cancelButtonTitle:nil otherButtonTitles:nil, nil];    [alertView setBackgroundColor:[UIColor clearColor]];    //必須在這裡調用show方法,否則indicator不在UIAlerView裡面    [alertView show];        self.indicator = [[UIActivityIndicatorViewalloc] initWithActivityIndicatorStyle:UIActivityIndicatorViewStyleWhiteLarge];    self.indicator.center = CGPointMake(alertView.bounds.size.width/2, alertView.bounds.size.height-40);        //停止時隱藏indicator    self.indicator.hidesWhenStopped = YES;        //將UIActivityIndicator作為子控制項放在UIAlertView當中    [alertView addSubview:self.indicator];    [self.indicator startAnimating];    }

下面看看運行效果和伺服器的返回資訊:

                                

點擊登入後,可以在控制台看到伺服器返回的登入結果:



以上就是一個利用ASIHTTPRequest向服務端發送資料並擷取返回結果的小例子,利用ASIHTTPRequest還有其他很多強大的功能,具體使用方法和用途可以查看官方文檔。

對Android&IOS感興趣的朋友可以加入我們的討論QQ群,在這裡,我們只討論乾貨:

iOS群:220223507

Android群:282552849


歡迎關注我的新浪微博和我交流:@唐韌_Ryan

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.