Interceptors for URLRequest and URLSession for adding custom header fields for all URLRequest?









up vote
2
down vote

favorite












How can i add custom Interceptor in URLRequest and URLSession for all URLRequest in app. So i can add my own custom HTTPHeader Fields at one place for all http request, there is alamofire Interceptor but i don't want to use alamofire, i want Interceptor in urlsession and urlrequest in swift 4.
I extend the urlrequest but not work for me.



//1st One 
extension URLRequest
init(_ url: URL)
self.init(url: url)
self.setValue(deviceInformation.shared.deviceModel, forHTTPHeaderField: "deviceModel")
self.allHTTPHeaderFields?.updateValue(deviceInformation.shared.deviceModel, forKey: "deviceModel1")



// 2nd one

extension URLRequest
var instance: URLRequest
var instanceRequest: URLRequest!
instanceRequest.allHTTPHeaderFields?.updateValue(deviceInformation.shared.deviceModel, forKey: "deviceModel")
instanceRequest.addValue(deviceInformation.shared.deviceSystemName, forHTTPHeaderField: "deviceSystemName")
instanceRequest.addValue(deviceInformation.shared.deviceSystemVersion, forHTTPHeaderField: "deviceSystemVersion")
instanceRequest.addValue(deviceInformation.shared.getAppVersion(), forHTTPHeaderField: "appVersion")
return instanceRequest


//both are not working









share|improve this question



























    up vote
    2
    down vote

    favorite












    How can i add custom Interceptor in URLRequest and URLSession for all URLRequest in app. So i can add my own custom HTTPHeader Fields at one place for all http request, there is alamofire Interceptor but i don't want to use alamofire, i want Interceptor in urlsession and urlrequest in swift 4.
    I extend the urlrequest but not work for me.



    //1st One 
    extension URLRequest
    init(_ url: URL)
    self.init(url: url)
    self.setValue(deviceInformation.shared.deviceModel, forHTTPHeaderField: "deviceModel")
    self.allHTTPHeaderFields?.updateValue(deviceInformation.shared.deviceModel, forKey: "deviceModel1")



    // 2nd one

    extension URLRequest
    var instance: URLRequest
    var instanceRequest: URLRequest!
    instanceRequest.allHTTPHeaderFields?.updateValue(deviceInformation.shared.deviceModel, forKey: "deviceModel")
    instanceRequest.addValue(deviceInformation.shared.deviceSystemName, forHTTPHeaderField: "deviceSystemName")
    instanceRequest.addValue(deviceInformation.shared.deviceSystemVersion, forHTTPHeaderField: "deviceSystemVersion")
    instanceRequest.addValue(deviceInformation.shared.getAppVersion(), forHTTPHeaderField: "appVersion")
    return instanceRequest


    //both are not working









    share|improve this question

























      up vote
      2
      down vote

      favorite









      up vote
      2
      down vote

      favorite











      How can i add custom Interceptor in URLRequest and URLSession for all URLRequest in app. So i can add my own custom HTTPHeader Fields at one place for all http request, there is alamofire Interceptor but i don't want to use alamofire, i want Interceptor in urlsession and urlrequest in swift 4.
      I extend the urlrequest but not work for me.



      //1st One 
      extension URLRequest
      init(_ url: URL)
      self.init(url: url)
      self.setValue(deviceInformation.shared.deviceModel, forHTTPHeaderField: "deviceModel")
      self.allHTTPHeaderFields?.updateValue(deviceInformation.shared.deviceModel, forKey: "deviceModel1")



      // 2nd one

      extension URLRequest
      var instance: URLRequest
      var instanceRequest: URLRequest!
      instanceRequest.allHTTPHeaderFields?.updateValue(deviceInformation.shared.deviceModel, forKey: "deviceModel")
      instanceRequest.addValue(deviceInformation.shared.deviceSystemName, forHTTPHeaderField: "deviceSystemName")
      instanceRequest.addValue(deviceInformation.shared.deviceSystemVersion, forHTTPHeaderField: "deviceSystemVersion")
      instanceRequest.addValue(deviceInformation.shared.getAppVersion(), forHTTPHeaderField: "appVersion")
      return instanceRequest


      //both are not working









      share|improve this question















      How can i add custom Interceptor in URLRequest and URLSession for all URLRequest in app. So i can add my own custom HTTPHeader Fields at one place for all http request, there is alamofire Interceptor but i don't want to use alamofire, i want Interceptor in urlsession and urlrequest in swift 4.
      I extend the urlrequest but not work for me.



      //1st One 
      extension URLRequest
      init(_ url: URL)
      self.init(url: url)
      self.setValue(deviceInformation.shared.deviceModel, forHTTPHeaderField: "deviceModel")
      self.allHTTPHeaderFields?.updateValue(deviceInformation.shared.deviceModel, forKey: "deviceModel1")



      // 2nd one

      extension URLRequest
      var instance: URLRequest
      var instanceRequest: URLRequest!
      instanceRequest.allHTTPHeaderFields?.updateValue(deviceInformation.shared.deviceModel, forKey: "deviceModel")
      instanceRequest.addValue(deviceInformation.shared.deviceSystemName, forHTTPHeaderField: "deviceSystemName")
      instanceRequest.addValue(deviceInformation.shared.deviceSystemVersion, forHTTPHeaderField: "deviceSystemVersion")
      instanceRequest.addValue(deviceInformation.shared.getAppVersion(), forHTTPHeaderField: "appVersion")
      return instanceRequest


      //both are not working






      ios iphone swift






      share|improve this question















      share|improve this question













      share|improve this question




      share|improve this question








      edited Nov 9 at 7:18

























      asked Nov 9 at 7:05









      Jibran SiddiQui

      284




      284






















          1 Answer
          1






          active

          oldest

          votes

















          up vote
          1
          down vote













           //Here is the answer for "Custom Header Fields" for all URLRequest. 

          extension URLRequest
          init(_ url: URL)
          self.init(url: url)
          self.setValue("Value", forHTTPHeaderField: "fieldNamme")



          //how to use
          func aBC()
          //how to call it.
          let myUrl = URL(string: "Your url string")
          let request = URLRequest(myUrl) //this will work and add custom header
          //let request = URLRequest(url: myUrl) // this will not work because it call the super init method of urlrequest.

          request.httpMethod = "POST"
          do
          request.httpBody = try JSONSerialization.data(withJSONObject: ["bodyParam" : "value"], options: )
          catch let error
          return


          let dataTask = URLSession.shared.dataTask(with: request)
          data,response,error in

          do
          //.
          // .
          // .
          catch let error as NSError


          dataTask.resume()






          share|improve this answer




















            Your Answer






            StackExchange.ifUsing("editor", function ()
            StackExchange.using("externalEditor", function ()
            StackExchange.using("snippets", function ()
            StackExchange.snippets.init();
            );
            );
            , "code-snippets");

            StackExchange.ready(function()
            var channelOptions =
            tags: "".split(" "),
            id: "1"
            ;
            initTagRenderer("".split(" "), "".split(" "), channelOptions);

            StackExchange.using("externalEditor", function()
            // Have to fire editor after snippets, if snippets enabled
            if (StackExchange.settings.snippets.snippetsEnabled)
            StackExchange.using("snippets", function()
            createEditor();
            );

            else
            createEditor();

            );

            function createEditor()
            StackExchange.prepareEditor(
            heartbeatType: 'answer',
            convertImagesToLinks: true,
            noModals: true,
            showLowRepImageUploadWarning: true,
            reputationToPostImages: 10,
            bindNavPrevention: true,
            postfix: "",
            imageUploader:
            brandingHtml: "Powered by u003ca class="icon-imgur-white" href="https://imgur.com/"u003eu003c/au003e",
            contentPolicyHtml: "User contributions licensed under u003ca href="https://creativecommons.org/licenses/by-sa/3.0/"u003ecc by-sa 3.0 with attribution requiredu003c/au003e u003ca href="https://stackoverflow.com/legal/content-policy"u003e(content policy)u003c/au003e",
            allowUrls: true
            ,
            onDemand: true,
            discardSelector: ".discard-answer"
            ,immediatelyShowMarkdownHelp:true
            );



            );













            draft saved

            draft discarded


















            StackExchange.ready(
            function ()
            StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f53221201%2finterceptors-for-urlrequest-and-urlsession-for-adding-custom-header-fields-for-a%23new-answer', 'question_page');

            );

            Post as a guest















            Required, but never shown

























            1 Answer
            1






            active

            oldest

            votes








            1 Answer
            1






            active

            oldest

            votes









            active

            oldest

            votes






            active

            oldest

            votes








            up vote
            1
            down vote













             //Here is the answer for "Custom Header Fields" for all URLRequest. 

            extension URLRequest
            init(_ url: URL)
            self.init(url: url)
            self.setValue("Value", forHTTPHeaderField: "fieldNamme")



            //how to use
            func aBC()
            //how to call it.
            let myUrl = URL(string: "Your url string")
            let request = URLRequest(myUrl) //this will work and add custom header
            //let request = URLRequest(url: myUrl) // this will not work because it call the super init method of urlrequest.

            request.httpMethod = "POST"
            do
            request.httpBody = try JSONSerialization.data(withJSONObject: ["bodyParam" : "value"], options: )
            catch let error
            return


            let dataTask = URLSession.shared.dataTask(with: request)
            data,response,error in

            do
            //.
            // .
            // .
            catch let error as NSError


            dataTask.resume()






            share|improve this answer
























              up vote
              1
              down vote













               //Here is the answer for "Custom Header Fields" for all URLRequest. 

              extension URLRequest
              init(_ url: URL)
              self.init(url: url)
              self.setValue("Value", forHTTPHeaderField: "fieldNamme")



              //how to use
              func aBC()
              //how to call it.
              let myUrl = URL(string: "Your url string")
              let request = URLRequest(myUrl) //this will work and add custom header
              //let request = URLRequest(url: myUrl) // this will not work because it call the super init method of urlrequest.

              request.httpMethod = "POST"
              do
              request.httpBody = try JSONSerialization.data(withJSONObject: ["bodyParam" : "value"], options: )
              catch let error
              return


              let dataTask = URLSession.shared.dataTask(with: request)
              data,response,error in

              do
              //.
              // .
              // .
              catch let error as NSError


              dataTask.resume()






              share|improve this answer






















                up vote
                1
                down vote










                up vote
                1
                down vote









                 //Here is the answer for "Custom Header Fields" for all URLRequest. 

                extension URLRequest
                init(_ url: URL)
                self.init(url: url)
                self.setValue("Value", forHTTPHeaderField: "fieldNamme")



                //how to use
                func aBC()
                //how to call it.
                let myUrl = URL(string: "Your url string")
                let request = URLRequest(myUrl) //this will work and add custom header
                //let request = URLRequest(url: myUrl) // this will not work because it call the super init method of urlrequest.

                request.httpMethod = "POST"
                do
                request.httpBody = try JSONSerialization.data(withJSONObject: ["bodyParam" : "value"], options: )
                catch let error
                return


                let dataTask = URLSession.shared.dataTask(with: request)
                data,response,error in

                do
                //.
                // .
                // .
                catch let error as NSError


                dataTask.resume()






                share|improve this answer












                 //Here is the answer for "Custom Header Fields" for all URLRequest. 

                extension URLRequest
                init(_ url: URL)
                self.init(url: url)
                self.setValue("Value", forHTTPHeaderField: "fieldNamme")



                //how to use
                func aBC()
                //how to call it.
                let myUrl = URL(string: "Your url string")
                let request = URLRequest(myUrl) //this will work and add custom header
                //let request = URLRequest(url: myUrl) // this will not work because it call the super init method of urlrequest.

                request.httpMethod = "POST"
                do
                request.httpBody = try JSONSerialization.data(withJSONObject: ["bodyParam" : "value"], options: )
                catch let error
                return


                let dataTask = URLSession.shared.dataTask(with: request)
                data,response,error in

                do
                //.
                // .
                // .
                catch let error as NSError


                dataTask.resume()







                share|improve this answer












                share|improve this answer



                share|improve this answer










                answered Nov 9 at 13:13









                Jibran SiddiQui

                284




                284



























                    draft saved

                    draft discarded
















































                    Thanks for contributing an answer to Stack Overflow!


                    • Please be sure to answer the question. Provide details and share your research!

                    But avoid


                    • Asking for help, clarification, or responding to other answers.

                    • Making statements based on opinion; back them up with references or personal experience.

                    To learn more, see our tips on writing great answers.





                    Some of your past answers have not been well-received, and you're in danger of being blocked from answering.


                    Please pay close attention to the following guidance:


                    • Please be sure to answer the question. Provide details and share your research!

                    But avoid


                    • Asking for help, clarification, or responding to other answers.

                    • Making statements based on opinion; back them up with references or personal experience.

                    To learn more, see our tips on writing great answers.




                    draft saved


                    draft discarded














                    StackExchange.ready(
                    function ()
                    StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f53221201%2finterceptors-for-urlrequest-and-urlsession-for-adding-custom-header-fields-for-a%23new-answer', 'question_page');

                    );

                    Post as a guest















                    Required, but never shown





















































                    Required, but never shown














                    Required, but never shown












                    Required, but never shown







                    Required, but never shown

































                    Required, but never shown














                    Required, but never shown












                    Required, but never shown







                    Required, but never shown







                    Popular posts from this blog

                    𛂒𛀶,𛀽𛀑𛂀𛃧𛂓𛀙𛃆𛃑𛃷𛂟𛁡𛀢𛀟𛁤𛂽𛁕𛁪𛂟𛂯,𛁞𛂧𛀴𛁄𛁠𛁼𛂿𛀤 𛂘,𛁺𛂾𛃭𛃭𛃵𛀺,𛂣𛃍𛂖𛃶 𛀸𛃀𛂖𛁶𛁏𛁚 𛂢𛂞 𛁰𛂆𛀔,𛁸𛀽𛁓𛃋𛂇𛃧𛀧𛃣𛂐𛃇,𛂂𛃻𛃲𛁬𛃞𛀧𛃃𛀅 𛂭𛁠𛁡𛃇𛀷𛃓𛁥,𛁙𛁘𛁞𛃸𛁸𛃣𛁜,𛂛,𛃿,𛁯𛂘𛂌𛃛𛁱𛃌𛂈𛂇 𛁊𛃲,𛀕𛃴𛀜 𛀶𛂆𛀶𛃟𛂉𛀣,𛂐𛁞𛁾 𛁷𛂑𛁳𛂯𛀬𛃅,𛃶𛁼

                    Crossroads (UK TV series)

                    ữḛḳṊẴ ẋ,Ẩṙ,ỹḛẪẠứụỿṞṦ,Ṉẍừ,ứ Ị,Ḵ,ṏ ṇỪḎḰṰọửḊ ṾḨḮữẑỶṑỗḮṣṉẃ Ữẩụ,ṓ,ḹẕḪḫỞṿḭ ỒṱṨẁṋṜ ḅẈ ṉ ứṀḱṑỒḵ,ḏ,ḊḖỹẊ Ẻḷổ,ṥ ẔḲẪụḣể Ṱ ḭỏựẶ Ồ Ṩ,ẂḿṡḾồ ỗṗṡịṞẤḵṽẃ ṸḒẄẘ,ủẞẵṦṟầṓế