gpt4 book ai didi

php - 将 Swift 连接到 PHP 代码

转载 作者:行者123 更新时间:2023-11-28 09:18:22 26 4
gpt4 key购买 nike

我正在尝试在我的网站上用 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 版本。

最佳答案

几个想法:

  1. 如果您要使用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")
    }
  2. 但我建议不要使用 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(...) 或类似的东西。


顺便说一句,在上面的两个例子中,我在解析 JSON 时都使用了 as NSDictionary。如果您要生成 JSON 数组,请将其更改为 as NSArray

注意:我从 PHP json_encode 推断出您想要生成有效的 JSON 响应。但是你不能只是 json_encode 一个字符串。通常,您会使用 json_encode(["key"=> "string"]) 生成字典或使用 json_encode(["string"]) 生成数组。

关于php - 将 Swift 连接到 PHP 代码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26490837/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com