Я пытаюсь создать URL-запрос в Swift, чтобы отправить HTTP-запрос POST на Discord Webhook, и запрос завершается с ошибкой, определенной как 'responseProblem'. Я не уверен, откуда возникла проблема с ответом.
Технически Discord должна быть в состоянии принимать HTTP-запросы, и куча исследований по этой проблеме ни к чему не привели. Раньше я работал с веб-игроками Discord, но никогда раньше не играл с подобными вещами, поэтому я немного застрял в том, что мне следует делать сейчас.
import Foundation
enum APIError:Error {
case responseProblem
case decodingProblem
case encodingProblem
}
struct APIRequest {
let resourceURL: URL
init(endpoint: String) {
let resourceString = "<discord-webhook-url-removed-for-privacy>"
guard let resourceURL = URL(string: resourceString) else {fatalError()}
self.resourceURL = resourceURL
}
func save (_ messageToSave:Message, completion: @escaping(Result<Message, APIError>) -> Void ) {
do {
var urlRequest = URLRequest(url: resourceURL)
urlRequest.httpMethod = "POST"
urlRequest.addValue("application/json", forHTTPHeaderField: "Content-Type")
urlRequest.httpBody = try JSONEncoder().encode(messageToSave)
let dataTask = URLSession.shared.dataTask(with: urlRequest) { data, response, _ in
guard let httpResponse = response as? HTTPURLResponse, httpResponse.statusCode == 200, let
jsonData = data else {
completion(.failure(.responseProblem)) // <<< 'responseProblem' is outputted in console as the error
return
}
do {
let messageData = try JSONDecoder().decode(Message.self, from: jsonData)
completion(.success(messageData))
} catch {
completion(.failure(.decodingProblem))
}
}
dataTask.resume()
} catch {
completion(.failure(.encodingProblem))
}
}
}
Когда я запускаю этот SwiftЯ ожидал, что программа отправит запрос на Discord Webhook, чтобы отправить сообщение на назначенный канал. Однако единственная ошибка, выводимая в консоль, это responseProblem
. Пожалуйста, дайте мне знать, если есть что-то еще, что мне нужно добавить, чтобы получить основную причину проблемы (я все еще немного новичок в Swift, и я обычно работаю с JavaScript, поэтому я не уверен, как правильно отладить вSwift и Xcode.)
Приложение Swift встроено в iOS 12.2, потому что Xcode не любит этот материал в iOS 13