Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/108.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ajax/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios Swift发送请求未响应_Ios_Xcode_Macos_Swift - Fatal编程技术网

Ios Swift发送请求未响应

Ios Swift发送请求未响应,ios,xcode,macos,swift,Ios,Xcode,Macos,Swift,因此,我正处于学习swift的早期阶段,我正在尝试创建一个简单的类来包装从给定web服务发送/检索数据的过程。我遇到的问题是,在我发送请求或任何类型的响应之后,控制台上没有打印任何内容。我真的很感激任何关于我做错了什么的帮助或指导 import Foundation class URLHelper : NSObject,NSURLConnectionDelegate,NSURLConnectionDataDelegate{ var data = NSMutableData() func

因此,我正处于学习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()
更新


返回的json如下
{“id”:“1”,“用户名”:“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,获取内容并将其存储在数据对象中,然后将其转换为字符串并打印。您还可以将JSON字符串(strResult)解码为JSON对象


希望有帮助:)

您可以使用此方法,该方法具有completionHandler,可以从web服务返回结果

 func postAsync(backendMethodName:String ,body: [[String:String]], completionHandler: (resultnig:String) -> Void)
{

    let session: NSURLSession = NSURLSession.sharedSession()
    let urlPath: String = "\(sessionclass.connectionString)/\(backendMethodName)"

    let request = NSMutableURLRequest(URL: NSURL(string:urlPath)!)

    request.HTTPMethod = "POST"
    request.timeoutInterval=10
    request.addValue("application/json", forHTTPHeaderField: "Content-Type")
    request.addValue("application/json", forHTTPHeaderField: "Accept")
    request.HTTPBody = try! NSJSONSerialization.dataWithJSONObject(body, options: [])

    let task = session.dataTaskWithRequest(request) { data, response, error in
        guard data != nil else
        {
            print("no data found: \(error)")
            return
        }

        let strData = NSString(data: data!, encoding: NSUTF8StringEncoding)
        completionHandler(resultnig: strData as! String)


    }

    task.resume()

}
它采用后端方法名(在web服务中)和您的jsonData

你可以这样称呼它:

 self.postAsync("checkConnection", body: self.alldictionariesConn, completionHandler: { (resultnig) in
       print(resulting) })//resulting = result from your web service

为您的
请求设置
timeoutInterval
,然后重试。一切似乎都很好,您的代码也在调用
delegate
方法。@arthankamal我有,但仍然没有打印响应的内容。我调试并在连接后启动。启动程序结束,控制台显示程序以0退出。检查您的委托是否正在调用,如果它正在调用,则检查您的JSON是否有效。我的委托是否没有被调用?我穿过每一条线路,在连接之后。启动其他任何东西都不会被触发。为什么呢?
self
不应该设置代理。json是有效的,因为当我尝试使用objective c it workedi时,我用
google.com
尝试了你的代码,它在我的系统中运行得很好,只是在
json序列化中崩溃了
嘿,谢谢,我已经设法让它工作了,但是你的方式简单多了,所以我使用了:)谢谢。那么我什么时候需要发送请求呢?我最初认为,如果我想通过web服务检索或保存数据,我必须发送请求……这不正确吗?在您的PHP代码中,我可以看到您正在使用GET。对于使用GET,您应该在url中提供参数,并且数据将被回显。如果您想使用HTTP请求,应该在PHP中使用POST而不是GET。我给出的这段代码是用于GET的,它是有效的。你可以得到这样的数据。如果安全性对您很重要,那么您应该将PHP中的GET方法更改为POST方法。这样,您就不会通过URL提供参数。
 self.postAsync("checkConnection", body: self.alldictionariesConn, completionHandler: { (resultnig) in
       print(resulting) })//resulting = result from your web service