移动client往往须要同后台server进行通信,上传或者下载数据,最经常使用到的方式就是Http Get,如今我们来学习在iOS项目中使用Get方式同server进行通信。

【一】server端实现

(1)首先要安装好能进行J2EE开发的Eclipse或者MyEclipse,配置好Tomcat环境。

我这里使用Eclipse Mars。Tomcat版本号为8.  然后新建一个Dynamic Web Project。名称为MyServer。

然后在WebContent中新建一个JSP File。名称为index.当前文件夹结构例如以下:

(2)然后在Hello.jsp中实现例如以下:对于client的请求,我将会返回“Hello 名字”。否则返回No Paras.

<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<%
String name = request.getParameter("name");
if (name != null) { out.print("Hello " + name);
} else { out.print("No Paras");
}
%>

(3)直接点击执行,或者在浏览器中输入url,结果例如以下:

【二】iOSclient实现

(1)新建一个iOS项目。Language选择Swift。然后在storyboard中设计界面例如以下:

(2)然后分别进行控件和代码的绑定。输入框TextField和显示返回结果的TextView进行Outlets绑定,发送button进行Action绑定。最后实现代码例如以下:

    @IBOutlet weak var inputName: UITextField!

    @IBOutlet weak var feedbackInfo: UITextView!

    override func viewDidLoad() {

        super.viewDidLoad()

    }

    @IBAction func connectServer(sender: UIButton) {

        NSURLConnection.sendAsynchronousRequest(NSURLRequest(URL: NSURL(string: "http://localhost:8080/MyServer/Hello.jsp?name=\(inputName.text)")!),
queue: NSOperationQueue()) { (resp:NSURLResponse!, data:NSData!, error:NSError!) -> Void in if let d = data{ dispatch_sync(dispatch_get_main_queue(), { () -> Void in
self.feedbackInfo.text = String(NSString(data: d, encoding: NSUTF8StringEncoding)!)
})
} }
}

当中button的点击事件也能够是以下的形式:

    @IBAction func connectServer(sender: UIButton) {

        NSURLConnection.sendAsynchronousRequest(NSURLRequest(URL: NSURL(string: "http://localhost:8080/MyServer/Hello.jsp?

name=\(inputName.text)")!),
queue: NSOperationQueue.mainQueue()) { (resp:NSURLResponse!, data:NSData!, error:NSError!) -> Void in if let d = data{ self.feedbackInfo.text = String(NSString(data: d, encoding: NSUTF8StringEncoding)!) } }
}

(3)执行程序。实现效果例如以下:

.

github主页:https://github.com/chenyufeng1991  。欢迎大家訪问!

最新文章

  1. Ubuntu 16.04 LTS设置国内更新源
  2. .net之微信企业号开发(三) 回调模式的接口开发
  3. Flex弹性布局在移动设备上的应用
  4. domain规划
  5. ASP.NET服务器端执行耗时操作的工作记录
  6. JS插件-日期
  7. RHEL7磁盘分区挂载和格式化
  8. WdatePicker 设置今天起 后30天可选
  9. c++11 线程:让你的多线程任务更轻松
  10. SQL SERVER中如何格式化日期(转)
  11. oracle 审计日志清理
  12. 【转】如何解决plsql查询oracle数据库语句where条件带有中文无法匹配结果
  13. nyoj 取石子(七) 环形博弈
  14. Vue(day5)
  15. May 31. 2018 Week 22nd Thursday
  16. [转] history.back()和history.go()的区别
  17. crc循环冗余检验
  18. 嵌入式开发之zynqMp ---Zynq UltraScale+ MPSoC 图像编码板zcu102
  19. UICollectionView设置首个cell默认选中(二)
  20. Java归去来第2集:利用Eclipse创建Maven Web项目

热门文章

  1. TYPE=MyISAM 与 ENGINE=MyISAM 的区别(摘要版)
  2. Spring全局异常捕获
  3. vue中的组件传值
  4. 第2节 hive基本操作:10、外部分区表综合练习
  5. MRC转ARC(2)
  6. 数据库insert update select语句
  7. nodejs运行机制
  8. 用SQLyog或Navicat远程连接数据库
  9. &lt;Linux&gt; 下安装和卸载JDK
  10. PHP 数组使用之道