iOS的Swift代码赢得';我没有发送任何HTTPS数据包
IDE:Xcode 8.3.3 操作系统:MacOSSierra 我们目前正在让我们的应用程序向运行JAX-RS的tomcat服务器发送POST HTTP请求。下面是代码,出于某种原因,WireShark(一种数据包捕获软件)没有捕获从iOS模拟器发送的任何数据包。有人能找到原因吗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
// 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的强大工具。