WebClient.DownloadString(url) funktioniert nicht mit 2. parameter

Ich bin mit dem WebClient.DownloadString() Methode zum herunterladen von Daten. Ich bin mit dem folgenden code:

static void Main(string[] args)
    {
        string query = "select+%3farticle+%3fmesh+where+{+%3farticle+a+npg%3aArticle+.+%3farticle+npg%3ahasRecord+[+dc%3asubject+%3fmesh+]+.+filter+regex%28%3fmesh%2c+\"blood\"%2c+\"i\"%29+}";
        NameValueCollection queries = new NameValueCollection();
        queries.Add("query", query);
        //queries.Add("output", "sparql_json");
        using (WebClient wc = new WebClient())
        {
            wc.Headers.Add("user-agent", "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.2; .NET CLR 1.0.3705;)");
            wc.QueryString = queries;
            string result = wc.DownloadString("http://data.nature.com/sparql");
            Console.WriteLine(result);
        }
        Console.ReadLine();
    }

Mit diesem code, tt, funktioniert einwandfrei und gibt mir einen xml-string als Ausgabe. Aber ich möchte eine JSON-Ausgabe und daher habe ich un-kommentiert die Zeile

queries.Add("output", "sparql_json");

und ausgeführt das gleiche Programm und es scheint zu Holen eine Fehlermeldung vom server.

Allerdings, wenn ich versuche, verwenden Sie einen web browser und verwenden Sie die gleiche url (wie unten angegeben), es gibt mir ein JSON als erwartet:
Die URL funktioniert im Browser

Frage ich mich, was das problem sein könnte. Vor allem, wenn es funktioniert in einem browser und nicht über einen webclient. Ist der webclient, etwas anderes zu tun hier?

Bitte beachten Sie, dass ich habe auch versucht, die Abfrage als

query + "&output=sparql_json"

Aber das funktioniert auch nicht.

Könnte mir bitte jemand sagen, was das problem sein könnte?

Dank

  • in Ihrem string query = "..." Initialisierung, sollten Sie die Codierung der Wert schon? Ich glaube nicht, dass Sie sein sollte. Legen Sie es als plain-text und lassen Sie queries.Add("query", query) codieren Sie es für Sie.
  • Matthäus, das problem ist nicht mit der Abfrage. Nur mit der Abfrage, es funktioniert gut - es gibt mir eine xml. Aber wenn ich versuche ein "&output=sparql_json" zusammen mit der Abfrage, bekomme ich eine Fehlermeldung. Irgendwelche Ideen?
  • Es könnte sein das der browser bis zur Festsetzung einer fehlerhaften query-string für Sie automatisch, ziemlich sicher, dass es dein query-string, der repariert werden muss.
  • Matthäus, vielen Dank für die Kommentare. Offenbar, wie L. B vorgeschlagen, ich konnte das Akzeptieren Json-header und ändern sonst nichts. Der query-string (codiert oder nicht) gibt mir genau das selbe Ergebnis.
  • Froh bekamen Sie es das arbeiten.
  • Ram, bitte schreiben Sie Ihre änderung als Antwort und akzeptieren Sie es, oder Fragen, LB.

InformationsquelleAutor Ram | 2012-04-05
Schreibe einen Kommentar