Как прокомментировал gavsta707, вы можете искать переменную в контенте HTML с помощью регулярного выражения var dovizHesaplama = '(.+)'
.
Затем декодируйте JSON, используя JSONDecoder
. Обратите внимание, что вам нужно будет указать формат даты YYYY-MM-dd'T'HH:mm:ss.SSSSSSSZZZZZ
.
Некоторый код, который делает это, может выглядеть как
import Foundation
struct ExchangeRates: Codable {
struct Rate: Codable {
let ask: Double
let bid: Double
let time: Date
}
struct OtherRates: Codable {
let EUR: Rate
let GBP: Rate
let XAU: Rate
let AUD: Rate
let CAD: Rate
let CHF: Rate
let CNY: Rate
let DKK: Rate
let ETH: Rate
let NOK: Rate
let NZD: Rate
let RUB: Rate
let SAR: Rate
let SEK: Rate
let TRL: Rate
let XAG: Rate
let XPD: Rate
let XPT: Rate
}
let USD: OtherRates
}
let jsonPattern = try NSRegularExpression(pattern: "var dovizHesaplama = '(.+)'")
let decoder = JSONDecoder()
let dateFormatter = DateFormatter()
dateFormatter.dateFormat = "YYYY-MM-dd'T'HH:mm:ss.SSSSSSSZZZZZ"
decoder.dateDecodingStrategy = .formatted(dateFormatter)
let data = try Data(contentsOf: URL(string: "https://yatirim.akbank.com/tr-tr/doviz/sayfalar/default.aspx")!)
if let string = String(data: data, encoding: .utf8) as NSString? {
if let match = jsonPattern.firstMatch(in: string as String, range: NSRange(location: 0, length: string.length)) {
let json = string.substring(with: match.range(at: 1))
let rates = try decoder.decode(ExchangeRates.self, from: json.data(using: .utf8)!)
print(rates)
}
}
Вот мое решение этой проблемы:
Я использую 64-разрядную версию Win 7 и Office 2007
Запустите программу « dcomcnfg -32 ». (Вы не можете найти компоненты word и excel, если он работает под 64-разрядной версией)
Перейдите в «Корень консоли / Службы компонентов / Компьютер / Мой компьютер / Конфигурация DCOM /» Найдите Microsoft Word и Excel и выберите свойства.
Перейдите в раздел «Безопасность» и выберите «Настроить» в разделе «Разрешения на конфигурацию» (при необходимости вы можете изменить и другие разрешения, но мне это не требовалось). Добавьте «IIS_IUSRS» и предоставьте ему «Полный доступ».
Теперь перейдите в «Личность» и выберите «Интерактивный пользователь».
Не забудьте нажать «ОК», когда закончите. : D
Надеюсь, это поможет вам с вашей проблемой, а также остальным, кто придет сюда и прочитает это.
Перейдите к реестру HKCR>TypeLib>{00020905-0000-0000-C000-000000000046}>8.7>0
, затем удалите папку" win32", это для ошибки Word COM Class.
Переходят к реестру HKCR>TypeLib>{00020813-0000-0000-C000-000000000046}>1.9>0
, затем удаляют папку" win32", это для ошибки Excel COM Class.
Попытка, что метод, что метод решил мою проблему.
Эта ошибка соответствует .NET System.UnauthorizedAccessException и обычно вызвана неправильными настройками доступа к COM-компоненту, который пытается создать ваш код.
Вы можете попробовать запустить утилиту dcomcnfg, перейдите по ссылке В настройках DCOM выберите нужный объект и разрешите доступ к нему учетной записи, под которой работает ваш код ASP.NET. Это должно решить вашу проблему.
Вы должны предоставить доступ к COM-компоненту Word для идентификации процесса ASP.NET ({MACHINE} \ ASPNET в IIS 5 или сетевая служба в IIS 6):
«Панель управления - Администрирование - Службы компонентов - Компьютеры - Мой компьютер - конфигурация DCOM »
Найдите « Документ Microsoft Word », щелкните правой кнопкой мыши - Настройки - Вкладка« Безопасность », предоставьте доступ (локальный и удаленный) для идентификации процесса ASP.NET (« ASPNET »для IIS 5, «Сетевая служба» для IIS 6).
Если затем вы получите «System.Runtime.InteropServices.COMException (0x800A13E9): Недостаточно памяти. Сохраните документ сейчас». исключение при открытии / добавлении документа (мой собственный опыт) , просто удалите временные файлы из папок% Temp% и \ Content.Word.