2015-11-11 8 views
5

Ciao Sto cercando di impostare User Agent con WebRequest, ma sfortunatamente ho trovato solo come farlo usando HttpWebRequest, quindi ecco il mio codice e spero puoi aiutarmi a impostare l'agente utente usando WebRequest.Come impostare User Agent con System.Net.WebRequest in C#

Ecco il mio codice

public string Post(string url, string Post, string Header, string Value) 
    { 
     string str_ReturnValue = ""; 

     WebRequest request = WebRequest.Create(url); 

     request.Method = "POST"; 
     request.ContentType = "application/json;charset=UTF-8";       
     request.Timeout = 1000000; 

     if (Header != null & Value != null) 
     { 
      request.Headers.Add(Header, Value);         
     } 

     using (Stream s = request.GetRequestStream()) 
     { 
      using (StreamWriter sw = new StreamWriter(s)) 
       sw.Write(Post); 
     } 

     using (Stream s = request.GetResponse().GetResponseStream()) 
     {     
      using (StreamReader sr = new StreamReader(s)) 
      { 
       var jsonData = sr.ReadToEnd(); 
       str_ReturnValue += jsonData.ToString(); 
      } 
     } 

     return str_ReturnValue; 
    } 

Ho provato con l'aggiunta di "request.Headers.Add (" user-agent "_USER_AGENT);" ma ricevo un messaggio di errore.

risposta

18

Utilizzare la proprietà UserAgent su HttpWebRequest convertendolo in un HttpWebRequest.

HttpWebRequest request = (HttpWebRequest)WebRequest.Create(url); 
request.UserAgent = "my user agent"; 

In alternativa, invece di fusione è possibile utilizzare WebRequest.CreateHttp invece.

+0

Il problema è che non posso usare HttpWebRequest, perché il messaggio che sto facendo non funziona, ho fatto funzionare usando WebRequest. – enb141

+0

@ user1102989 tu * stai * utilizzando un 'HttpWebRequest' - è un super tipo di' WebRequest'. Tutto quello che stai facendo con il cast sta rendendo il tipo più specifico. – vcsjones

+0

@ user1102989 'User Agent' è un campo nelle intestazioni HTTP, ovvero è specifico del protocollo HTTP. Quindi, ha senso non esiste alcuna funzionalità per impostarlo direttamente sulla classe 'WebRequest', perché questa classe è progettata per essere la classe base per le richieste fatte usando qualsiasi tipo di protocollo. – kamilk

0

Se si tenta di utilizzare uno HttpWebRequest invece di una richiesta Web di base, esiste un specific property exposed for UserAgent.

// Create a new 'HttpWebRequest' object to the mentioned URL. 
var myHttpWebRequest=(HttpWebRequest)WebRequest.Create("http://www.contoso.com"); 
myHttpWebRequest.UserAgent=".NET Framework Test Client"; 

// Assign the response object of 'HttpWebRequest' to a 'HttpWebResponse' variable. 
var myHttpWebResponse=(HttpWebResponse)myHttpWebRequest.GetResponse(); 
+1

Quindi non c'è modo di aggiungere UserAgent usando WebRequest? – enb141

+0

Penso che UserAgent sarebbe specifico per le richieste web HTTP. Questo è il motivo per cui non si trova nella classe base 'WebRequest'. Se stai usando 'WebRequest.Create' questa funzione factory sta creando comunque oggetti' HttpWebRequest' (come per il codice di esempio sopra) quindi dovresti essere sicuro di lanciare e usare la proprietà 'UserAgent' lì. – Reddog

+0

Grazie a HttpWebRequest, sono riuscito a impostare il mio User Agent personalizzato – enb141

0
WebRequest postrequest = WebRequest.Create("protocol://endpointurl.ext"); 
((System.Net.HttpWebRequest)postrequest).UserAgent = ".NET Framework" 
+1

Ti consiglio di aggiungere alcune informazioni insieme a questo codice. – abc123

Problemi correlati