我正在尝试编写一个用php编写的网站上的简单字符串:
json_encode("str");
echo json_encode("str");
在Swift中,我将如何检索该字符串。我目前有一个报告HTTPBody的函数。
func buttonAction(sender:UIButton!)
{
var request = NSMutableURLRequest(URL: NSURL(string: myUrlWhereThePHPCodeWasWritten), cachePolicy: NSURLRequestCachePolicy.ReloadIgnoringLocalCacheData, timeoutInterval: 5)
var response: NSURLResponse?
var error: NSError?
let jsonString = ""
request.HTTPBody = jsonString.dataUsingEncoding(NSUTF8StringEncoding, allowLossyConversion: false)
request.HTTPMethod = "GET"
NSURLConnection.sendSynchronousRequest(request, returningResponse: &response, error: &error)
if let httpResponse = response as? NSHTTPURLResponse {
println("HTTP response: \(response)")
} else {
println("No HTTP response")
}
}
如何打印出" str"本身。我是一个菜鸟,基本上试图创建这个过程的hello world版本。
答案 0 :(得分:0)
有几点想法:
如果您要使用sendSynchronousRequest
,则应将NSData
作为返回值:
if let data = NSURLConnection.sendSynchronousRequest(request, returningResponse: &response, error: &error) {
// if JSON
var parseError: NSError?
if let responseObject = NSJSONSerialization.JSONObjectWithData(data, options: nil, error: &parseError) as? NSDictionary {
println("string = \(responseObject)")
} else {
println("parseError = \(parseError)")
}
// if simple string
//
// let string = NSString(data: data, encoding: NSUTF8StringEncoding)
// println("string = \(string)")
} else {
println("error = \(error)")
}
if let httpResponse = response as? NSHTTPURLResponse {
println("HTTP response: \(response)")
} else {
println("No HTTP response")
}
但我会反对sendSynchronousRequest
。或者,至少不要从主线程调用它。使用异步方法,例如:
NSURLConnection.sendAsynchronousRequest(request, queue: nil) {
response, data, error in
if let httpResponse = response as? NSHTTPURLResponse {
println("HTTP response: \(response)")
} else {
println("No HTTP response")
}
if data != nil {
// if JSON
var parseError: NSError?
if let responseObject = NSJSONSerialization.JSONObjectWithData(data, options: nil, error: &parseError) as? NSDictionary {
println("string = \(responseObject)")
} else {
println("parseError = \(parseError)")
}
// if simple string
//
// let string = NSString(data: data, encoding: NSUTF8StringEncoding)
// println("string = \(string)")
} else {
println("error = \(error)")
}
}
或使用NSURLSession.sharedSession().dataTaskWithURL(...)
或类似的东西。
BTW,在上面的两个例子中,我在解析JSON时使用了as NSDictionary
。如果您正在生成JSON数组,请将其更改为as NSArray
。
注意:我从PHP json_encode
推断出您想要生成有效的JSON响应。但你不能只是json_encode
一个字符串。通常,您json_encode(["key" => "string"])
生成字典或json_encode(["string"])
生成数组。