2015-10-03 11 views
9

Quando utilizzare le intestazioni nell'oggetto HttpRequestMessage sulle intestazioni in HttpClient ??HttpClient Headers vs HttpRequestMessage Headers

Abbiamo bisogno di aggiungere l'autorizzazione (in continua evoluzione) e poche intestazioni personalizzate (sempre mutevoli)

Domande

  1. Qual è il metodo preferito?
  2. Devo aggiungere le intestazioni comuni (uguale per tutte le richieste) a HttpClient e richiedere le intestazioni basate su all'oggetto HttpRequestMessage ??

    //HttpRequestMessage Code 
        HttpRequestMessage reqmsg =new HttpRequestMessage(); 
        reqmsg.Headers.Authorization =new AuthenticationHeaderValue("some scheme"); 
        reqmsg.Headers.Add("name","value"); 
    
        //HttpClient Code 
        HttpClient client =new HttpClient(); 
        client.DefaultRequestHeaders.Authorization =new AuthenticationHeaderValue("some scheme"); 
        client.DefaultRequestHeaders.Add("name", "value"); 
    

risposta

8
  1. Qual è il metodo preferito? Dovrei aggiungere intestazioni comuni (uguale per tutte le richieste) a HttpClient
  2. e intestazioni basate su richiesta all'oggetto HttpRequestMessage ??

Le tue domande sono auto-risposte.

DefaultRequestHeaders sono quelli che faranno parte di qualsiasi richiesta, il che è un vantaggio perché sarete in grado di evitare di ripetere voi stessi aggiungendo alcune intestazioni una volta ancora. D'altra parte, HttpRequestMessage.Headers sarà solo una parte di quella richiesta.

Quando si dovrebbe utilizzare uno sull'altro? Ho intenzione di utilizzare due esempi:

  • ho bisogno di inviare un token OAuth portatore come parte di ogni richiesta così mi sono messo l'intestazione Authorization nel HttpClient.DefaultRequestHeaders, e se ho bisogno di aggiornare il token, ho appena bisogno di impostarlo di nuovo lì.

  • Ho bisogno di inviare un'entità serializzata come JSON o XML a seconda di alcune condizioni. Cioè, imposterò l'intestazione Content-type in base alle richieste.

Problemi correlati