gpt4 book ai didi

excel - 通过 WinHttpRequest 将多个测量值发布到 influxDB 的正确行分隔符是什么?

转载 作者:行者123 更新时间:2023-12-04 20:26:58 25 4
gpt4 key购买 nike

我想通过 VBA 和 WinHttp 库将时间序列的多行(测量值)发布到 InfluxDB,精度以秒为单位(精度 = s)。

当发布一个测量值时,一切正常,并且可以在数据库中找到测量值。

当使用\n 作为分隔符发布多行时(如文档中所述:a link 来自服务器的结果是“无法解析”。

一行的字符串看起来像这样,可以很容易地插入到数据库中:“d_1_deals value=0 1554336000”

多行的字符串如下所示:“d_1_deals value=0 1554336000\nd_1_deals value=0 1554336900\nd_1_deals value=0 1554337800d_1_deals value=0 1554338700”

我正在使用“WinHttp.WinHttpRequest.5.1”对象和 post 方法。
完整的代码如下所示:

Function post_fp_information_to_influx()

sURL = "http://xx.xxx.xx.250:80/write?"
db_string = "db=xxxxxTEST&precision=s"
resulturl_post = sURL & db_string
params = "d_1_deals value=0 1554336000\nd_1_deals value=0 1554336900\nd_1_deals value=0 1554337800d_1_deals value=0 1554338700"

sResult = GetHTTPResult(resulturl_post, "POST", params)

End Function


Function GetHTTPResult(sURL As String, Post_GET As String, params As String) As String

Dim XMLHTTP As Variant, sResult As String
Set XMLHTTP = CreateObject("WinHttp.WinHttpRequest.5.1")

XMLHTTP.Open Post_GET, sURL, False
XMLHTTP.setRequestHeader "User-Agent", "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.0)"
XMLHTTP.setRequestHeader "Content-type", "application/x-www-form-urlencoded"


XMLHTTP.send (params)


sResult = XMLHTTP.ResponseText

Set XMLHTTP = Nothing
GetHTTPResult = sResult
End Function

发布多个测量值时出现的错误:

"{"error":"无法解析 'd_1_deals value=0 1554336000\\nd_1_deals value=0 1554336900\\n': 时间戳错误"}"

我认为问题在于,尤其是“\n”被错误地编码为“\\n”。

我尝试了不同的分隔符和方法,但 .send-method 不断发送“\\n”,API 不将其识别为新行。

任何想法如何改变这种行为?如何更改分隔符或编码行为以使 influxDb-API 识别行分隔符?

最佳答案

\n是一个 C 特殊字符,用于在源代码中编写字符串时表示行标记。 C 编译器将其替换为实际的行标记字符 0x0D .

在 Windows 上,这通常在 I/O 中转换为 0x0D0A , 回车 + 换行。

在 Visual Basic 中,您必须使用 Chr(10) ( 0x0A ) 和 Chr(13) (0X0D)。

您可能需要试验数据库是否只需要回车或换行。

所以你写的字符串会变成:

params = "d_1_deals value=0 1554336000" & Chr(13) & "d_1_deals value= ..."

或者
params = "d_1_deals value=0 1554336000" & Chr(13) & Chr(10) & "d_1_deals value= ..."

正确/工作方式:
params = "d_1_deals value=0 1554336000" & Chr(10) & "d_1_deals value= ..."

关于excel - 通过 WinHttpRequest 将多个测量值发布到 influxDB 的正确行分隔符是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58282416/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com