2017-12-11 3 views
1

간단한 쿼리 명령을 작성하려고합니다. influxDB의 http 문서는 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

관련 문제