iOS网络开发基础--向服务器发送数据的方式

可以通过三种方式向服务器发送数据:NSURLRequest,NSMutableURLRequest,NSURLConnection

一、NSURLRequest向服务器发送同步或异步请求

举例:如何发送一个GET请求

* 默认就是GET请求

// 1.URL

NSURL *url = [NSURL URLWithString:@"http://www.baidu.com"];

// 2.请求

NSURLRequest *request = [NSURLRequest requestWithURL:url];

// 3.发送请求

[NSURLConnection sendAsynchronousRequest:request queue:[NSOperationQueue mainQueue] completionHandler:^(NSURLResponse *response, NSData *data, NSError *connectionError) {

}];

二、NSMutableURLRequest向服务器发送请求

如何发送一个POST请求

// 1.创建一个URL

请求路径

NSURL *url = [NSURL URLWithString:@"http://xxxxxx/login"];

// 2.创建一个请求

NSMutableURLRequest *request = [NSMutableURLRequest requestWithURL:url];

// 设置请求方法

request.HTTPMethod = @"POST";

// 设置请求体 :
请求参数

NSString *param = [NSString stringWithFormat:@"username=%@&pwd=%@", usernameText, pwdText];

// NSString --> NSData

request.HTTPBody = [param dataUsingEncoding:NSUTF8StringEncoding];

三、NSURLConnection向服务器发送请求

利用NSURLConnection发送请求的基本步骤

// 1.创建一个NSURL对象 : 请求请求路径

NSURL *url = [NSURL URLWithString:@"http://4234324/5345345"];

// 2.传入NSURL创建一个NSURLRequest对象,设置请求头和请求体

NSURLRequest *request = [NSURLRequest requestWithURL:url];

// 3.使用NSURLConnection发送NSURLRequest请求

[NSURLConnection sendAsynchronousRequest:request queue:queue completionHandler:

^(NSURLResponse *response, NSData *data, NSError *connectionError) {

// 4.处理服务器返回的数据

}];

  1. 发送同步请求

+ (NSData *)sendSynchronousRequest:(NSURLRequest*)request returningResponse:(NSURLResponse**)response error:(NSError**)error;

2.发送异步请求---根据对服务器返回数据的处理方式的不同,分为block回调和NSURLConnectionDelegate代理方法

  • block回调

+ (void)sendAsynchronousRequest:(NSURLRequest*) request

queue:(NSOperationQueue*) queue

completionHandler:(void (^)(NSURLResponse* response, NSData* data, NSError* connectionError)) handler

  • request:需要发送的请求
  • queue:一般用主队列,存放handler这个任务
  • handler:当请求完毕后,会自动调用这个block
  • NSURLConnectionDelegate协议中的代理方法

开始接收到服务器的响应时调用

- (void)connection:(NSURLConnection*)connection didReceiveResponse:(NSURLResponse*)response;

接收到服务器返回的数据时调用(服务器返回的数据比较大时会调用多次)

- (void)connection:(NSURLConnection*)connection didReceiveData:(NSData*)data;

服务器返回的数据完全接收完毕后调用

- (void)connectionDidFinishLoading:(NSURLConnection*)connection;

请求出错时调用(比如请求超时)

- (void)connection:(NSURLConnection*)connection didFailWithError:(NSError*)error;

四、发送JSON给服务器

1.一定要使用POST请求

2.设置请求头:

[request setValue:@"application/json" forHTTPHeaderField:@"Content-Type"];

3.设置JSON数据为请求体

时间: 2024-10-13 22:09:33

iOS网络开发基础--向服务器发送数据的方式的相关文章

iOS网络开发基础--发送HTTP请求

一.一个HTTP请求的基本要素 1.请求URL:客户端通过哪个路径找到服务器 2.请求参数:客户端发送给服务器的数据 如登录时需要发送的用户名和密码 3.返回结果:服务器返回给客户端的数据 一般是JSON数据或者XML数据 二.基本的HTTP请求的步骤(移动客户端) 1.拼接"请求URL" + "?" + "请求参数" 请求参数的格式:参数名=参数值 多个请求参数之间用&隔开:参数名1=参数值1&参数名2=参数值2 2.发送请求

IOS网络开发NSURLSession详解(一)概述

原创blog,转载请注明出处blog.csdn.net/hello_hwc 我的IOS-SDK详解专栏,欢迎关注 http://blog.csdn.net/column/details/huangwenchen-ios-sdk.html 前言: 这个IOS网络编程的系列计划6篇文章,NSURLSession3篇(一篇概述,一篇详细阐述三种task和delegate的使用,一篇阐述授权,证书等内容),网络的基础知识两篇(一篇REST API讲解已经写完了,一篇我会把写博客的过程中遇到的概念总结出来

ios开发中的4种数据持久化方式【二、数据库 SQLite3、Core Data 的运用】

               在上文,我们介绍了ios开发中的其中2种数据持久化方式:属性列表.归档解档.本节将继续介绍另外2种iOS持久化数据的方法:数据库 SQLite3.Core Data 的运用: 在本节,将通过对4个文本框内容的创建.修改,退出后台,再重新回到后台,来认识这两种持久化数据的方式.效果图如下[图1]: [图1 GUI界面效果图] [本次开发环境: Xcode:7.2     iOS Simulator:iphone6S plus   By:啊左]     一.数据库SQL

iOS项目开发基础

  iOS项目开发基础 前沿:整理了一个项目开发基础,涉及到开发初期的必备条件.源码请点击github地址下载. 目录 一.封装网络请求 二.json转model 三.方法顺序 四.文件结构 五.UITableView自动布局 六.UITableViewHeaderFooterView复用 七.计算label内容大小 一.封装网络请求 1.封装get请求 + (void)get:(NSString *)url param:(NSString *)param success:(void (^)(N

Android - 向服务器发送数据(GET).

在此,使用HTTP协议,通过GET请求,向服务器发送请求,这种方式适合于数据量小,数据安全性要求不高的情况下. 一,服务器端,使用Servlet. 在服务器端,定义一个HttpServlet的子类,以及一个Filter的子类(用于统一编码,防止出现乱码). package spt.servlet; import java.io.IOException; import javax.servlet.ServletException; import javax.servlet.annotation.W

C语言Socket-单工通信(客户端向服务器发送数据)

服务端(server) #include <stdio.h> #include <winsock2.h> #pragma comment(lib,"ws2_32.lib") //把ws2_32.lib加到Link页的连接库 #define PORT 15001 //通信的端口(指服务器端) #define ERROR 0 #define BUFFER_SIZE 1024 //注意:此Server端数据接收缓冲区 >= Client端数据发送缓冲区 ,否则造

网络编程 --- URLConnection --- 读取服务器的数据 --- java

使用URLConnection类获取服务器的数据 抽象类URLConnection表示一个指向指定URL资源的活动连接,它是java协议处理器机制的一部分. URL对象的openConnection()方法就是调用了URLStreamHandler的openConnection()方法. 如有疑问请参考:JAVA网络编程[第三版], 如下图: 怎样获取服务器输出的数据呢?代码如下: import java.io.IOException; import java.io.InputStream; i

使用post()方法以POST方式从服务器发送数据

使用post()方法以POST方式从服务器发送数据 与get()方法相比,post()方法多用于以POST方式向服务器发送数据,服务器接收到数据之后,进行处理,并将处理结果返回页面,调用格式如下: $.post(url,[data],[callback]) 参数url为服务器请求地址,可选项data为向服务器请求时发送的数据,可选项callback参数为请求成功后执行的回调函数. 1 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transiti

ASIFormDataRequest/ASIHTTPRequest 向服务器发送数据/上传图片 返回网页错误数据

例如返回: 尽管它走的是成功返回的方法,可是依然返回了错误的网页数据,引起此情况有以下可能:1.上传多个参数时,缺少参数: 2.参数的格式不正确:(LZ的错误就是参数是二次使用,没注意参数已经修改过格式了) 3.向发送服务器发送的key值一定要确认正确: ASIFormDataRequest/ASIHTTPRequest 向服务器发送数据/上传图片 返回网页错误数据