I’m attempting to fetch the subscription knowledge from Wundergraph server by utilizing URLSession to make community requests and deal with the responses by enabling httpShouldUsePipelining. Right here is my code
class SubscriptionNetworkManager{
non-public var request: URLRequest!
public init(_ url: String,
withURLParameter jsonObject: [String: Any]) {
guard let jsonData = strive? JSONSerialization.knowledge(withJSONObject: jsonObject, choices: []),
let jsonString = String(knowledge: jsonData, encoding: .utf8),
var urlComponents = URLComponents(string: url)
else {
return
}
urlComponents.queryItems = [URLQueryItem(name: "wg_variables", value: jsonString)]
if let finalUrl = urlComponents.url {
self.request = URLRequest(url: finalUrl)
print(finalUrl )
}
self.request.httpMethod = HttpMethod.get.rawValue
self.request.httpShouldUsePipelining = true
if let accessToken = UserDefaults.accessToken {
let tempHeader = [
"Authorization": "Bearer (accessToken)"
]
self.request.allHTTPHeaderFields = tempHeader
let encoder = JSONEncoder()
if let jsonData = strive? encoder.encode(tempHeader) {
let jsonString = String(knowledge: jsonData, encoding: .utf8) ?? ""
print("headers:-> ", jsonString)
}
} else {
fatalError("No Header!!!")
}
}
// Fetch knowledge from specified url
func fetchData<T: Codable>(withCompletion completion: @escaping (T) -> Void,
withCompletionWithError errors: @escaping (String) -> Void) {
URLSession.shared.dataTask(with: self.request) { (knowledge, response, error) in
DispatchQueue.primary.async {
if let error = error {
let errorMessage = error.localizedDescription
errors(errorMessage)
return
}
guard let knowledge = knowledge else {
let errorMessage = error?.localizedDescription ?? "Didn't fetch programs"
errors(errorMessage)
return
}
self.printOutResponse(knowledge: knowledge, response: response)
do {
let decodedData = strive JSONDecoder().decode(T.self, from: knowledge)
completion(decodedData)
} catch {
errors("Error decoding knowledge: (error)")
}
}
}.resume()
}
// MARK: Print Response from API
non-public func printOutResponse(knowledge: Knowledge, response: URLResponse?) {
// for printing response
do {
let json = strive JSONSerialization.jsonObject(with: knowledge, choices: [])
print(json)
} catch {
print(error)
}
guard let httpResponse = response as? HTTPURLResponse else { return }
let statusCode = httpResponse.statusCode
print("Standing Code =>", statusCode)
}
}
I’ve referred to as by
let url = Urls.baseUrl + "protected/SubscribeToConversationsByChannelId"
let object = ["channel_id": "d111350f-80cb-4fab-beaa-84c090717d2f"]
SubscriptionNetworkManager.init(url,
withURLParameter: object).fetchData() { (response: ProtectedSubscribeToConversationsByChannelIdResponseDataHasuraMochiConversations) in
print(response)
} withCompletionWithError: { error in
print(error)
}
I repeatedly get 404 error.
However once I tried by Postman, by offering identical params, and header, I get standing code 200.
Right here is my postman Screenshot. Then from postman I can discover cURL beneath Code snippet, by paste cURL on terminal, after updating server, I can see actual time knowledge in terminal. At the moment, We’re utilizing WunderGraph Server. I attempted quite a bit however cannot in a position to repair it out. Can anybody assist me to unravel this challenge?