ios - Swift 发送请求没有响应

标签 ios xcode macos swift

所以我正处于学习 swift 的早期阶段,我正在尝试创建一个简单的类来包装从给定 Web 服务发送/检索数据的过程。我遇到的问题是,在我发送请求或任何类型的响应后,没有任何内容打印到控制台。对于我做错了什么,我真的很感激任何帮助或指导

import Foundation

class URLHelper : NSObject,NSURLConnectionDelegate,NSURLConnectionDataDelegate{

var data = NSMutableData()


func sendReq(){
    let urlPath: String = "http://localhost/web-service/action.php?callback=showUserDetails&uid=1"
    var url: NSURL = NSURL(string: urlPath)!
    var request: NSURLRequest = NSURLRequest(URL: url,cachePolicy: NSURLRequestCachePolicy.ReloadIgnoringLocalCacheData, timeoutInterval: 4)
    var connection: NSURLConnection = NSURLConnection(request: request, delegate: self, startImmediately: false)!

    connection.start()
}


func connection(connection: NSURLConnection!, didReceiveData data: NSData!){
    self.data.appendData(data)
}

func connection(connection: NSURLConnection, didFailWithError error: NSError) {
    println(error.description)
}

func connectionDidFinishLoading(connection: NSURLConnection!) {
    var err: NSError
    var jsonResult: NSDictionary = NSJSONSerialization.JSONObjectWithData(data, options: NSJSONReadingOptions.MutableContainers, error: nil) as NSDictionary
    println(jsonResult)
}


}


var req = URLHelper()   
req.sendReq()

更新

<?php



//Get the action to run the coorect request
if(isset($_GET['callback'])){
        $function = $_GET['callback'];
        call_user_func($function);
        //$function();
}else{
    echo "Error: No valid callback supplied to request";
}


function showUserDetails(){ 
    $conn = mysqli_connect("localhost", "root", "root", "service_db") or die("Error " . mysqli_error($conn)); 
    $userid = $_GET['uid'];
    $results = mysqli_fetch_assoc(mysqli_query($conn,"SELECT * FROM user WHERE id = $userid")); 
    mysqli_close($conn);

    echo json_encode($results);

}


if($db->connect_errno > 0){
  die('Unable to connect to database [' . $db->connect_error . ']');
 }

?>

返回的json如下{"id":"1","username":"tom","email":"tom_smith@gmail.com"}

最佳答案

发帖不需要请求,直接从url获取内容:

        var strResult:NSString

        let strURL = "http://localhost/web-service/action.php?callback=showUserDetails&uid=1"

        var dataURL = NSData(contentsOfURL: NSURL(string: strURL)!);

        if let d = dataURL
        {
            strResult = NSString(data: d, encoding: NSUTF8StringEncoding)!
            println(strResult)

        }

这里我只是简单的去url,获取内容存入data对象,然后转成字符串打印出来。您还可以将 JSON 字符串 (strResult) 解码为 JSON 对象。

希望对您有所帮助:)

关于ios - Swift 发送请求没有响应,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27704060/

相关文章:

swift - 如何将 NSEvent 标记为已处理?

python - 如何为 Python 2.7 安装 PyQT4?

iphone - 更新时现有 iOS 应用程序会发生什么情况?

ios - 如何调整 View 层次结构中的 UIRefreshControl 位置?

ios - SQLitt.Swift unregonized token 从 Swift 3.0 到 Swift 4.2 的转换错误

java - OSX - 编译 Java JNI 应用程序以仅在安装 JRE 的情况下运行

cocoa - Cocoa 中的 WebView 不接受击键?

将 NSNotificationCenter 添加到 UIView 的 iOS 异常

ios - UINavigationController 中的 UIScrollView 中的 UIViewController 想要推送新的 Controller

objective-c - iPad 捕获 16 :9 photos