json swift ios - 将参数发送到 php-sql

Posted

技术标签:

【中文标题】json swift ios - 将参数发送到 php-sql【英文标题】:json swift ios - sending parameters to a php-sql 【发布时间】:2014-11-08 20:02:57 【问题描述】:

您好,我正在尝试使用 JSON 将几个参数从 SWIFT ios 应用程序发送到 php-SQL 数据库。已经尝试了几个 sycronus 和 asyncronus 的例子,但我没有让它工作。

不断将 JSON 参数字符串转换为另一端将接收的格式..(当我在浏览器中尝试时它会工作..但不是来自应用程序本身)

这是代码 - 来自 PLAYGROUND (响应为 API Response: OPTIONAL (Missing JSON)

// Playground - noun: a place where people can play

import UIKit
import CoreLocation
var str = "Hello, playground debug use of JSON and PHP"
import Foundation


let url = NSURL(string:"http://mywebserver-replaced.no/POSITION/update.php?")
let cachePolicy = NSURLRequestCachePolicy.ReloadIgnoringLocalCacheData
var request = NSMutableURLRequest(URL: url!, cachePolicy: cachePolicy, timeoutInterval: 2.0)
request.HTTPMethod = "POST"

// set Content-Type in HTTP header
let boundaryConstant = "----------V2ymHFg03esomerandomstuffhbqgZCaKO6jy";
let contentType = "multipart/form-data; boundary=" + boundaryConstant
NSURLProtocol.setProperty(contentType, forKey: "Content-Type", inRequest: request)

// set data
var dataString = " "
dataString = "json=\"FBID\":10,\"Driving\":1,\"Latitude\":\"68.123\",\"Longitude\":\"22.124\",\"Time\":\"18:24\",\"Date\":\"07.10.2014\",\"Heading\":90"
let requestBodyData = (dataString as NSString).dataUsingEncoding(NSUTF8StringEncoding)
request.HTTPBody = requestBodyData

println("\(requestBodyData)")  // This will print "Optional(<6a736f6e...and so on..
                               // And except the optional it is quite correct.. json=

request.setValue("application/x-www-form-urlencoded", forHTTPHeaderField: "Content-Type")

// set content length
// NSURLProtocol.setProperty(requestBodyData.length, forKey: "Content-Length", inRequest: request)

var response: NSURLResponse? = nil
var error: NSError? = nil
let reply = NSURLConnection.sendSynchronousRequest(request, returningResponse:&response, error:&error)

let results = NSString(data:reply!, encoding:NSUTF8StringEncoding)
println("API Response: \(results)")

我做错了什么?

【问题讨论】:

@Nica 您的编辑没有帮助。一旦您有足够的声誉,您将能够进行此类小修复,而不会弄乱建议的编辑队列。但是,在达到这一点之前,请避免进行导致帖子其他部分未修复的编辑。 【参考方案1】:

你设置了错误的 Content-Type

request.setValue("application/x-www-form-urlencoded", forHTTPHeaderField: "Content-Type")

应该是

request.setValue("application/json", forHTTPHeaderField: "Content-Type")

还有

dataString = "json=\"FBID\":10,\"Driving\":1,\"Latitude\":\"68.123\",\"Longitude\":\"22.124\",\"Time\":\"18:24\",\"Date\":\"07.10.2014\",\"Heading\":90"

删除 json=,这会使正文不是有效的 json。

【讨论】:

你好硕 - 谢谢你的回答。我尝试了您的“应用程序/json”,这可能是正确的-但代码仍然不起作用:-(。“响应仍然是可选的(缺少 Json)

以上是关于json swift ios - 将参数发送到 php-sql的主要内容,如果未能解决你的问题,请参考以下文章

如何在 swift 3.0 中将此类参数发送到服务器调用

将正确的 JSON 作为参数发送到 RPC

在 swift 中使用 alamofire 发送 JSON 数组作为参数

如何使用 swift 2.0 制作 http post json 请求参数

如何将参数发送到 npm test [重复]

如何将xml参数发送到WCF?