2015-11-11 6 views
5

Hallo Ich versuche User Agent mit WebRequest zu setzen, aber leider habe ich nur gefunden, wie es mit HttpWebRequest, also hier ist mein Code und ich hoffe Sie können mir helfen, den Benutzer-Agent mit WebRequest einzustellen.Wie setze ich User Agent mit System.Net.WebRequest in C#

hier ist mein Code

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; 
    } 

ich mit dem Hinzufügen von "request.Headers.Add (" User-Agent versucht haben "_USER_AGENT);" aber ich erhalte eine Fehlermeldung.

Antwort

18

Verwenden Sie die UserAgent Eigenschaft auf HttpWebRequest, indem Sie es auf HttpWebRequest werfen.

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

Alternativ kann anstelle von Gießen können Sie WebRequest.CreateHttp stattdessen verwenden.

+0

Das Problem ist, dass ich nicht HttpWebRequest verwenden kann, weil der Beitrag nicht ich tue nicht funktioniert, die ich gemacht habe es mit WebRequest arbeiten. – enb141

+0

@ user1102989 Sie * sind * mit einem 'HttpWebRequest' - es ist eine super Art von' WebRequest'. Alles, was du mit der Besetzung machst, ist, den Typ spezifischer zu machen. – vcsjones

+0

@ user1102989 'User Agent' ist ein Feld in HTTP-Headern - was bedeutet, dass es spezifisch für das HTTP-Protokoll ist. Daher macht es Sinn, dass es keine Funktionalität gibt, um es direkt auf die WebRequest-Klasse zu setzen, da diese Klasse als Basisklasse für Anfragen gedacht ist, die unter Verwendung eines beliebigen Protokolls ausgeführt werden. – kamilk

0

Wenn Sie versuchen, eine HttpWebRequest anstelle einer einfachen WebRequest verwenden, dann gibt es eine 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

Also gibt es keine Möglichkeit zum Hinzufügen von UserAgent mit WebRequest? – enb141

+0

Ich denke, dass UserAgent spezifisch für HTTP-Web-Anfragen sein würde. Deshalb ist es nicht auf der Basisklasse 'WebRequest'. Wenn Sie 'WebRequest.Create' verwenden, erzeugt diese Factory-Funktion sowieso' HttpWebRequest'-Objekte (gemäß dem obigen Beispielcode), so dass Sie sicher sein sollten, dort die 'UserAgent'-Eigenschaft zu erzeugen. – Reddog

+0

Danke mit HttpWebRequest Ich konnte meinen benutzerdefinierten User Agent – enb141

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

einstellen Ich empfehle, einige Informationen zusammen mit diesem Code hinzuzufügen. – abc123