HomeiOS Developmentios - Cannot in a position to perform subscription by URLSession in...

ios – Cannot in a position to perform subscription by URLSession in swift?


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. enter image description here 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?

RELATED ARTICLES

LEAVE A REPLY

Please enter your comment!
Please enter your name here

Most Popular

Recent Comments