好吧,我很困惑。我的问题是,我想用UTF8编码将我的Excel电子表格的内容发送到HTTP POST Web服务 - 即我想支持阿拉伯文本。发送阿拉伯文到网络服务
我可以通过一个电子表格写入流的细胞循环:
Dim fsT 'As New Stream
Set fsT = CreateObject("ADODB.Stream")
fsT.Type = 2'Specify stream type - we want To save text/string data.
fsT.Charset = "utf-8" 'Specify charset For the source text data.
fsT.Open 'Open the stream And write binary data To the object
我可以,如果我想这个保存到一个文件,我的阿拉伯语文本将被保留。
当我发送到我的服务,我把它作为一个二进制文件发送,这可能是我的失败。
'Change stream type To binary
fsT.Position = 0
fsT.Type = adTypeBinary
其次
Set oHttp = CreateObject("MSXML2.XMLHTTP.6.0")
Call oHttp.Open("POST", pHtml, False)
oHttp.setRequestHeader "Content-Type", "application/text"
oHttp.setRequestHeader "User-Agent", "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.0)"
Call oHttp.send(fsT.Read)
但是我也试图发送文本,而不改变流类型
Call oHttp.send(fsT.ReadText)
在这两种情况下,这是我的服务器上收到的阿拉伯文文本只是一系列问号? ??? ???等等。顺便说一句,如果我看看sft.ReadText的输出结果,我就可以在VBA上得到它。
所以 - 我可以输出到一个文件好,但没有任何别的东西没有丢失我的文本。
我的VBA不是很好,我敢肯定我会被告知我有多愚蠢,但冒着这个风险,任何人都可以帮忙 - 我一直在尝试很多事物的排列,而我只是无法获得发送的文本。
您可以尝试将“Content-Type”,“application/text”更改为“Content-Type”,“text/html” – Satya
主要问题是Web服务期望从此POST请求得到什么?它真的只是期望在POST正文中的字节数据? Web服务通常如何获取其数据?如果它通常从HTML表单获得,那么它将期望application/x-www-form-urlencoded。 –
我已经尝试过text/html - 同样的问题。 Web服务从InputStream中读取,我的理解是从字节流中读取数据。它不指望HTML表单。对我来说,问题是在VBA方面,如果我去到即时窗口并打印fsT.ReadText的内容,那么这会打印带有问号的文本 - 而不是阿拉伯文本 - 所以我认为这是发送的内容,而是那么它是如何被接收的。 – Agent96