Я создаю функцию для получения содержимого XML в локальной сети с помощью Alamofire.
private func discover(from ip: String, completion: @escaping () -> Void) {
let url = ip.url(file: "discover.xml")
var request = URLRequest(url: url)
request.httpMethod = "GET"
request.timeoutInterval = 5.0 // !
let manager = Alamofire.SessionManager.default
// manager.session.configuration.httpShouldUsePipelining = true
manager.session.configuration.timeoutIntervalForRequest = 5.0
manager.session.configuration.timeoutIntervalForResource = 5.0
manager.request(request).responseData { [weak self] (response) in
guard let strongSelf = self else { return }
defer {
completion()
}
switch response.result {
case .success(_):
print("success")
case .failure(let error):
print("[LANUser] failed with IP: \(ip) => \(error)")
}
}
}
extension String {
func url(file: String) -> URL {
return URL(string: "http://\(self)/\(file)?rand=\(arc4random())")! // rand to make sure cached content is not returned
}
}
И использую ее, как показано ниже:
@IBAction func scan1(_ sender: Any) {
let ip = "192.168.1.105:17171" // I'm sure my server already worked on port `17171`
discover(from: ip) {
print("done -> check!")
}
}
Однако я могу просто получить ошибку -1004:
2018-10-05 18:07:34.393450+0700 LANScan[205:3504] Task <CCDD5C95-2C7E-408B-AD1B-BA54EFAA2F70>.<511> load failed with error Error Domain=NSURLErrorDomain Code=-1004 "Could not connect to the server." UserInfo={_kCFStreamErrorCodeKey=61, NSUnderlyingError=0x282b5eeb0 {Error Domain=kCFErrorDomainCFNetwork Code=-1004 "(null)" UserInfo={_kCFStreamErrorCodeKey=61, _kCFStreamErrorDomainKey=1}}, _NSURLErrorFailingURLSessionTaskErrorKey=LocalDataTask <CCDD5C95-2C7E-408B-AD1B-BA54EFAA2F70>.<511>, _NSURLErrorRelatedURLSessionTaskErrorKey=(
"LocalDataTask <CCDD5C95-2C7E-408B-AD1B-BA54EFAA2F70>.<511>"
), NSLocalizedDescription=Could not connect to the server., NSErrorFailingURLStringKey=http://192.168.1.105:17171/discover.xml?rand=3209938829, NSErrorFailingURLKey=http://192.168.1.105:17171/discover.xml?rand=3209938829, _kCFStreamErrorDomainKey=1} [-1004]
[LANUser] failed with IP: 192.168.1.105:17171 => Error Domain=NSURLErrorDomain Code=-1004 "Could not connect to the server." UserInfo={_kCFStreamErrorCodeKey=61, NSUnderlyingError=0x282b5eeb0 {Error Domain=kCFErrorDomainCFNetwork Code=-1004 "(null)" UserInfo={_kCFStreamErrorCodeKey=61, _kCFStreamErrorDomainKey=1}}, _NSURLErrorFailingURLSessionTaskErrorKey=LocalDataTask <CCDD5C95-2C7E-408B-AD1B-BA54EFAA2F70>.<511>, _NSURLErrorRelatedURLSessionTaskErrorKey=(
"LocalDataTask <CCDD5C95-2C7E-408B-AD1B-BA54EFAA2F70>.<511>"
), NSLocalizedDescription=Could not connect to the server., NSErrorFailingURLStringKey=http://192.168.1.105:17171/discover.xml?rand=3209938829, NSErrorFailingURLKey=http://192.168.1.105:17171/discover.xml?rand=3209938829, _kCFStreamErrorDomainKey=1}
done -> check!
Я также Allow Arbitrary Loads
и Arbitrary Loads in Web Content
(ниже), но это все равно не помогает:
Что мешает мне получить контент XML от 192.168.1.105?Есть ли какие-либо другие параметры, которые я должен включить, чтобы он работал?
Заранее спасибо,
РЕДАКТИРОВАТЬ: Добавить порт 17171, как @wottle указал