网络编程练习 -- NSURLConnection -- get/post请求

网络编程基础 -- NSURLConnection -- GET请求

LWTViewController.m

//
//  LWTViewController.m
//  网络编程练习 -- NSURLConnection -- get请求
//
//  Created by apple on 14-6-26.
//  Copyright (c) 2014年 lwt. All rights reserved.
//

#import "LWTViewController.h"
#import "MBProgressHUD+MJ.h"

@interface LWTViewController () <NSURLConnectionDataDelegate>
@property (weak, nonatomic) IBOutlet UITextField *usernameField;

@property (weak, nonatomic) IBOutlet UITextField *pwdField;

@property (nonatomic, strong) NSMutableData *data;

- (IBAction)loginBtnOnClick;

@end

@implementation LWTViewController

- (void)viewDidLoad
{
    [super viewDidLoad];
}

- (IBAction)loginBtnOnClick {

    NSString *username = self.usernameField.text;
    NSString *pwd = self.pwdField.text;

    if (username.length == 0) {
        [MBProgressHUD showError:@"请输入用户名"];
        return;
    }

    if (pwd.length == 0) {
        [MBProgressHUD showError:@"请输入密码"];
        return;
    }

    NSString *urlStr = [[NSString stringWithFormat:@"http://192.168.1.24:8080/MJServer/login?username=%@&pwd=%@", username, pwd] stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding];
    NSURL *url = [NSURL URLWithString:urlStr];
    NSMutableURLRequest *request = [NSMutableURLRequest requestWithURL:url];
    request.timeoutInterval = 5;

//    [self dataSyncFromRequest:request];
//    [self dataAsyncFromRequest:request];
    [self delegateFromRequest:request];

}

/**
 *  同步请求, 会阻塞线程
 */
- (void)dataSyncFromRequest : (NSURLRequest *)request
{
    NSData *data = [NSURLConnection sendSynchronousRequest:request returningResponse:nil error:nil];

    NSLog(@"%d",data.length);
}

/**
 *  异步请求
 */
- (void)dataAsyncFromRequest : (NSURLRequest *)request
{
    [MBProgressHUD showMessage:@"正在拼命加载中..."];
    [NSURLConnection sendAsynchronousRequest:request queue:[NSOperationQueue mainQueue] completionHandler:^(NSURLResponse *response, NSData *data, NSError *connectionError) {
        [MBProgressHUD hideHUD];

        if (connectionError) {
            [MBProgressHUD showError:@"网络繁忙,请稍后再试!!"];
            return ;
        }

        NSDictionary *dict = [NSJSONSerialization JSONObjectWithData:data options:NSJSONReadingMutableLeaves error:nil];

        NSString *error = dict[@"error"];
        if (error) {
            [MBProgressHUD showError:error];
        }else
        {
            NSString *success = dict[@"success"];
            [MBProgressHUD showSuccess:success];
        }

    }];
}

- (void)delegateFromRequest : (NSURLRequest *)request
{
    NSURLConnection *conn = [NSURLConnection connectionWithRequest:request delegate:self];

    [conn start];

    [MBProgressHUD showMessage:@"正在拼命加载中..."];
}

- (void)connection:(NSURLConnection *)connection didFailWithError:(NSError *)error
{
    NSLog(@"didFailWithError");
    [MBProgressHUD hideHUD];
    [MBProgressHUD showError:@"网络繁忙,请稍后再试"];
}

- (void)connection:(NSURLConnection *)connection didReceiveResponse:(NSURLResponse *)response
{
    NSLog(@"didReceiveResponse");
    self.data = [NSMutableData data];
}

- (void)connection:(NSURLConnection *)connection didReceiveData:(NSData *)data
{
    NSLog(@"didReceiveData");
    [self.data appendData:data];
}

- (void)connectionDidFinishLoading:(NSURLConnection *)connection
{
    NSLog(@"connectionDidFinishLoading");
    [MBProgressHUD hideHUD];

    NSDictionary *dict = [NSJSONSerialization JSONObjectWithData:self.data options:NSJSONReadingMutableLeaves error:nil];

    NSString *error = dict[@"error"];

    if (error) {
        [MBProgressHUD showError:error];
    }else
    {
        NSString *success = dict[@"success"];
        [MBProgressHUD showSuccess:success];
    }
}

@end

网络编程基础 -- NSURLConnection --POST请求

LWTViewController.m

//
//  LWTViewController.m
//  网络编程练习 -- NSURLConnection -- POST请求
//
//  Created by apple on 14-6-26.
//  Copyright (c) 2014年 lwt. All rights reserved.
//

#import "LWTViewController.h"
#import "MBProgressHUD+MJ.h"

@interface LWTViewController ()
@property (weak, nonatomic) IBOutlet UITextField *usernameField;

@property (weak, nonatomic) IBOutlet UITextField *pwdField;

@property (nonatomic, strong) NSMutableData *data;

- (IBAction)loginBtnOnClick;

@end

@implementation LWTViewController

- (void)viewDidLoad
{
    [super viewDidLoad];
}

- (IBAction)loginBtnOnClick
{
    NSString *username = self.usernameField.text;
    NSString *pwd = self.pwdField.text;
    if (username.length == 0) {
        [MBProgressHUD showError:@"请输入用户名"];
        return;
    }
    if (pwd.length == 0) {
        [MBProgressHUD showError:@"请输入密码"];
        return;
    }

    NSURL *url = [NSURL URLWithString:[@"http://192.168.1.24:8080/MJServer/login" stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding]];

    NSMutableURLRequest *request = [NSMutableURLRequest requestWithURL:url];
    request.timeoutInterval = 5;
    request.HTTPMethod = @"POST";
    [request setValue:@"Andriod and iOS" forHTTPHeaderField:@"User-Agent"];
    NSString *body = [NSString stringWithFormat:@"username=%@&pwd=%@", username, pwd];
    request.HTTPBody = [body dataUsingEncoding:NSUTF8StringEncoding];

    [MBProgressHUD showMessage:@"正在拼命加载中..."];

    [NSURLConnection sendAsynchronousRequest:request queue:[NSOperationQueue mainQueue] completionHandler:^(NSURLResponse *response, NSData *data, NSError *connectionError) {
        [MBProgressHUD hideHUD];
        if (connectionError) {
            [MBProgressHUD showError:@"网络繁忙, 请稍后重试!!"];
            return ;
        }

        NSDictionary *dict = [NSJSONSerialization JSONObjectWithData:data options:NSJSONReadingMutableLeaves error:nil];
        NSString *error = dict[@"error"];
        if (error) {
            [MBProgressHUD showError:error];
        }else
        {
            NSString *success = dict[@"success"];
            [MBProgressHUD showSuccess:success];
        }

    }];
}

@end

网络编程练习 -- NSURLConnection -- get/post请求

时间: 2024-08-16 20:28:05

网络编程练习 -- NSURLConnection -- get/post请求的相关文章

iOS开发之网络编程--使用NSURLConnection实现大文件断点续传下载+使用输出流代替文件句柄

前言:本篇讲解,在前篇iOS开发之网络编程--使用NSURLConnection实现大文件断点续传下载的基础上,使用输出流代替文件句柄实现大文件断点续传.    在实际开发中,输入输出流用的比较少,但是用起来也是很方便的.iOS开发用到的输入输出流和在Java中的输入输出流是几乎一样的,本质也是一个意思:将网络返回的数据当做流来处理.    输入输出的理解:输入到哪里?输出到哪里?这个问题不难理解,输入输出是要站着服务器角度来思考的,下面用图来解释:    代码关键词: 1.在接收到响应头的代理

iOS网络编程开发-NSURLConnection基本使用

iOS网络编程开发-NSURLConnection基本使用 一.NSURLConnection的常用类 (1)NSURL:请求地址 (2)NSURLRequest:封装一个请求,保存发给服务器的全部数据,包括一个NSURL对象,请求方法.请求头.请求体.... (3)NSMutableURLRequest:NSURLRequest的子类 (4)NSURLConnection:负责发送请求,建立客户端和服务器的连接.发送NSURLRequest的数据给服务器,并收集来自服务器的响应数据 二.NSU

iOS开发之网络编程--使用NSURLConnection实现大文件下载

主要思路(实现下载数据分段写入缓存中) 1.使用NSURLConnectionDataDelegate以及代理方法.2.在成功获取响应的代理方法中,获得沙盒全路径,并在该路径下创建空文件和文件句柄.3.在获取data的代理方法中,先设置句柄在沙盒全路径文件末尾,然后通过句柄写入data数据.4.在文件下载完的代理方法中,关闭句柄同时设置句柄引用为nil释放句柄和指针. 使用句柄的思路图(红色的箭头表示句柄,灰色的箭头表示移动的路径): 代码关键词: 类:NSFileHandle的方法 1.fil

Android 网络编程(3)——使用URLConnection提交请求

URL的openConnection()方法将返回一个URLConnection对象,该对象表示应用程序和URL之间的通信连接.程序可以通过URLConnection实例向该URL发送请求,读取URL引用的资源 通常创建一个和URL的连接,并发送请求.读取此URL引用的资源需要如下几个步骤: 通过调用URL对象openConnection()方法来创建URLConnection对象 设置URLConnection的参数和普通请求属性 如果只是发送GET方法请求,使用connect方式建立和远程资

浅谈iOS网络编程之一入门

计算机网络,基本上可以抽象是端的通信.实际在通讯中会用到不同的设备,不同的硬件中,为了能友好的传输信息,那么建立一套规范就十分必要了.先来了解一些基本概念 了解网络中传输的都是二进制数据流.  2.了解网络编程概念. 认识网络: // 网络概念 <1> 经常见到的: 网卡/网线/IP地址/子网掩码/路由地址/DNS服务器地址 作用? // <2> 容易忽略的:MAC地址/数据/数据包 // <3> 网络编程的概念:客户端/服务器/请求/响应/数据流 // 网络是数据交互

iOS开发之网络编程--5、NSURLSessionUploadTask+NSURLSessionDataDelegate代理上传

前言:关于NSURLSession的主要内容快到尾声了,这里就讲讲文件上传.关于文件上传当然就要使用NSURLSessionUploadTask,这里直接讲解常用的会和代理NSURLSessionDataDelegate一起搭配实现文件上传功能.另外,下面使用的文件上传思路是和NSURLConnection中本人之前的随笔<iOS开发之网络编程--使用NSURLConnection实现文件上传>提到的上传思路是一样的,都是要将请求信息拼接起来,然后传入到请求里进行上传.这个拼接过程是必要的,但

Java高级特性 第8节 网络编程技术

一.网络概述 1.网络的概念和分类 计算机网络是通过传输介质.通信设施和网络通信协议,把分散在不同地点的计算机设备互连起来,实现资源共享和数据传输的系统.网络编程就就是编写程序使联网的两个(或多个)设备(例如计算机)之间进行数据传输.Java语言对网络编程提供了良好的支持,通过其提供的接口我们可以很方便地进行网络编程.下面先对网络编程的一些基础知识进行介绍,最后给出使用Java语言进行网络编程的实例. 按照地理覆盖范围,计算机网络可以分为局域网(LAN).城域网(MAN).广域网(WAN). 2

网络编程---(数据请求+slider)将网络上的大文件下载到本地,并打印其进度

网络编程---将网络上的大文件下载到本地,并打印其进度. 点击"开始传输"按钮,将网络上的大文件先下载下来,下载完成后,保存到本地. UI效果图如下:            具体代码如下: //  ViewController.m //  0611---数据请求+滚动条 #import "ViewController.h" unsigned long tempLength; @interface ViewController () <NSURLConnecti

ios网络编程(一)之网络请求

小知识: 1, HTTP协议,Hyper Text Transfer Protocol(超?本传输协议)是?于从万维?服务器传送超?本到本地浏览器的传输协议,HTTP是 ?个应?层协议,由请求和响应构成,是?个标准的客户端服务器模型. 2,url,统?资源定位符,也被称为?址,因特?上标准的资源?址 url的符语法: 协议://授权/路径?查询 协议:ftp://(?件传输协议) http://(超?本传输协议) https://(安全超文本传输协议) file://(本地文件协议) 3,ios