2017-12-11 8 views
1

私は簡単なクエリコマンドを書こうとしています。 influxDBのhttpのDocumentaionはhereです。C#でWebClientを使用してInfluxDBを照会する方法

これは私がこれまで持っているものです。

WebClient client = new WebClient(); 
client.Credentials = new NetworkCredential("root", "root"); 
var reponse = client.UploadString("http://localhost:8080/query", "db=dbName\"q = SELECT \"something\" FROM \"tableName\" WHERE \"tag\"='valueTag'"); 

私は、「リモートサーバーがエラー返さ。:(400)不正な要求」を取得しています。それは、urlencodeがclient.UploadStringのデータ部分の文字列と同じではないためですか?

答えて

0

WebClient.UploadStringは、この操作に必要でないPOST要求の一部としてデータを送信します。代わりに、クエリをURLエンコードし、リクエストURLにHTTP GETパラメータとして送信する必要があります。これはUri.EscapeUriStringWebClient.DownloadStringを使用して達成することができます。

var client = new WebClient(); 
var queryString = Uri.EscapeUriString("db=dbName&q=SELECT \"something\" FROM \"tableName\" WHERE \"tag\"='valueTag'"); 
var queryUrl = "http://localhost:8086/query?" + queryString; 
var response = client.DownloadString(queryUrl); 

はまた、HTTP GETパラメータはアンパサンドで区切られており、キー/値の名前と=または&の間に空白があってはならないことに注意してください。例えば、?k1=v1&k2=v2は良好に形成され、一方?k1=v1&k1 = v1は形成されない。

+0

そのコードは私にとってはうまくいかないようです。私は悪い要求400のエラーを取得しました。私は新しい質問をしましたhttps://stackoverflow.com/questions/47797900/400-bad-request-error-when-trying-to-insert-into-influxdb-enterprise-server-しかし、。私は信任状と関係があると思う – JJSSOQ

関連する問題