Swift + JSP + JSON实现服务器POST请求

Swift中通过NSURLConnection来异步请求数据。

服务器通过JSP页面处理请求。

Swift代码如下,省略Connection的Delegate内容。

let urlPath: String = "Your_Address"
var url = NSURL(string: urlPath)
var request = NSMutableURLRequest(URL: url!)
request.HTTPMethod = "POST"
var dict=[
  ["name":"neo1","from":"blog1.smemo.info"],
  ["name":"neo2","from":"blog2.smemo.info"],
  ["name":"neo3","from":"blog3.smemo.info"]]
var jsonData = NSJSONSerialization.dataWithJSONObject(dict, options: NSJSONWritingOptions.allZeros, error: nil)
var str = NSString(data: jsonData!, encoding: NSUTF8StringEncoding)!
var dataString = "key=\(str)&otherKeys=otherValues"
let requestBodyData = (dataString as NSString).dataUsingEncoding(NSUTF8StringEncoding)
request.HTTPBody = requestBodyData
var connection = NSURLConnection(request: request, delegate: self, startImmediately: true)
println("sending request...")
connection!.start()

在POST请求的RequestBody中直接放入转换好的DataString,格式为“key1=value1&key2=value2&key3=value3”。

特别注意

var str = NSString(data: jsonData!, encoding: NSUTF8StringEncoding)!

最后的"!",如果没有"!"会使最后得到的JSON的String值带有Optional(...)。 那么服务器收到之后就无法直接将JSON的string parse成JSONObject了。而加了"!"相当于确认了存在NSString,从而String值中就不再带有Optional了。


JSP代码如下。

String body=request.getParameter("key");
JSONArray array=(JSONArray)JSONValue.parse(body);
JSONObject tempObj = (JSONObject)array.get(1);
logger.debug("from "+tempObj.get("from"));
试了各种方式,还是直截了当的getParameter()最简单粗暴,试过其他的像是getInputStream和getReader,似乎都没能成功。


 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值