Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/swift/17.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代码赢得';我没有发送任何HTTPS数据包_Swift_Apache_Https_Jax Rs - Fatal编程技术网

iOS的Swift代码赢得';我没有发送任何HTTPS数据包

iOS的Swift代码赢得';我没有发送任何HTTPS数据包,swift,apache,https,jax-rs,Swift,Apache,Https,Jax Rs,IDE:Xcode 8.3.3 操作系统:MacOSSierra 我们目前正在让我们的应用程序向运行JAX-RS的tomcat服务器发送POST HTTP请求。下面是代码,出于某种原因,WireShark(一种数据包捕获软件)没有捕获从iOS模拟器发送的任何数据包。有人能找到原因吗 // Method that send POST request func completeRegisteration() { // Get session let session = URLSess

IDE:Xcode 8.3.3 操作系统:MacOSSierra

我们目前正在让我们的应用程序向运行JAX-RS的tomcat服务器发送POST HTTP请求。下面是代码,出于某种原因,WireShark(一种数据包捕获软件)没有捕获从iOS模拟器发送的任何数据包。有人能找到原因吗

// Method that send POST request
func completeRegisteration() {
    // Get session
    let session = URLSession(configuration: URLSessionConfiguration.default, delegate: self, delegateQueue: OperationQueue.main)

    // Prepare for registeration request
    var urlRequest = URLRequest(url: URL(string: "https://\(ServerInfo.serverIP):\(ServerInfo.port)/service/UserServices/RegisterUser")!)
    urlRequest.httpMethod = "POST"
    let postString = "username=\(username)&emailAddress=\(emailAddress)&password=\(password)&phoneNumber=\(phoneNumber)&school=\(school)"
    urlRequest.httpBody = postString.data(using: .utf8)

    // Generate task
    let task = session.dataTask(with: urlRequest) {
        (data: Data?, response: URLResponse?, error: Error?) -> Void in
        if(error != nil) {
            print(error.debugDescription)
        } else {
            print("Registeration Succeed!")
        }
    }

    // Start task
    task.resume()
}

// URLSessionDelegate Method, class already implemented URLSessionDelegate interface.
func urlSession(_ session: URLSession, didReceive challenge: URLAuthenticationChallenge, completionHandler: @escaping (URLSession.AuthChallengeDisposition, URLCredential?) -> Void) {
    completionHandler( URLSession.AuthChallengeDisposition.useCredential, URLCredential(trust: challenge.protectionSpace.serverTrust!))
}

尝试以这种方式配置您的URLSession

func completeRegisteration() {
    var urlRequest = URLRequest(url: URL(string: "https://\(ServerInfo.serverIP):\(ServerInfo.port)/service/UserServices/RegisterUser")!)
    urlRequest.httpMethod = "POST"
    let postString = "username=\(username)&emailAddress=\(emailAddress)&password=\(password)&phoneNumber=\(phoneNumber)&school=\(school)"
    urlRequest.httpBody = postString.data(using: .utf8)
    let task = URLSession.shared.dataTask(with: urlRequest) { data, response, error in
        guard let data = data, error == nil else {                                                 // check for fundamental networking error
            print("error=\(error)")
            return
        }

        if let httpStatus = response as? HTTPURLResponse, httpStatus.statusCode != 200 {           // check for http errors
            print("statusCode should be 200, but is \(httpStatus.statusCode)")
            print("response = \(response)")
        }

        let responseString = String(data: data, encoding: .utf8)
        print("responseString = \(responseString)")
    }
    task.resume()
}

嗯,它说发生了SSL错误,无法与服务器建立安全连接。您是否知道如何使用Swift建立SSL连接?@YH.Liang您的服务是否通过端口443接受HTTPS呼叫?@Ning对,服务通过端口8443接受HTTPS呼叫。但是,我意识到服务器本身出现了一些问题,https设置应该可以。@YH.gov,请尝试通过Post Man请求调试您的服务器。这是一个来自Chrome的强大工具。