2017-08-31 1 views
7

Je le code qui crée une demande et lit les données, mais il est toujours videdonnées de lecture de l'URL renvoie la valeur vide

 static string uri = "http://yiimp.ccminer.org/api/wallet?address=DshDF3zmCX9PUhafTAzxyQidwgdfLYJkBrd"; 

    static void Main(string[] args) 
    { 

     HttpWebRequest request = (HttpWebRequest)WebRequest.Create(uri); 
     request.AutomaticDecompression = DecompressionMethods.Deflate | DecompressionMethods.GZip; 

     HttpWebResponse response = (HttpWebResponse)request.GetResponse(); 

     // Get the stream associated with the response. 
     Stream receiveStream = response.GetResponseStream(); 

     // Pipes the stream to a higher level stream reader with the required encoding format. 
     StreamReader readStream = new StreamReader(receiveStream, Encoding.UTF8); 

     Console.WriteLine("Response stream received."); 
     Console.WriteLine(readStream.ReadToEnd()); 
     response.Close(); 
     readStream.Close(); 

    } 

Quand je tente d'accéder au lien du navigateur je reçois ce JSON:

{"currency": "DCR", "unsold": 0.030825917365192, "balance": 0.02007306, "unpaid": 0.05089898, "paid24h": 0.05796425, "total": 0.10886323} 

Que manque-t-il?

+0

Avez-vous une erreur? Quel est le code d'état de la demande? – Jerodev

+0

pas d'erreur, juste une valeur vide –

Répondre

7

Lorsque vous exécutez la requête à partir d'un navigateur, un grand nombre d'en-têtes sont envoyés au service Web. Apparemment, ce service Web valide le UserAgent. Il s'agit d'une décision de la part de l'implémentation du service Web, ils ne souhaitent peut-être pas que vous y accédiez par programmation.

var client = (HttpWebRequest)HttpWebRequest.Create(new Uri("http://yiimp.ccminer.org/api/wallet?address=DshDF3zmCX9PUhafTAzxyQidwgdfLYJkBrd")); 
client.AutomaticDecompression = DecompressionMethods.GZip; 
client.UserAgent = "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/52.0.2743.116 Safari/537.36 Edge/15.15063"; 
client.Headers[HttpRequestHeader.AcceptEncoding] = "gzip, deflate"; 
client.Host = "yiimp.ccminer.org"; 
client.KeepAlive = true; 

using (var s = client.GetResponse().GetResponseStream()) 
using (var sw = new StreamReader(s)) 
{ 

    var ss = sw.ReadToEnd(); 
    Console.WriteLine(ss); 
} 

L'envoi des en-têtes semble fonctionner.

+0

cela semble fonctionner, les en-têtes manquantes était le problème, merci! –