请勿在 http 请求的查询参数中对 UTF-8 字符进行编码

问题描述 投票:0回答:1

我的英文来自谷歌翻译,如果不够清楚,很抱歉。

我正在使用 Tim Hall 的 WebRequest 类来发出 http 请求。 默认情况下,它对 URL 中的 UTF-8 字符进行编码,通常这是正确的行为,但是当我想从包含特定标签的电子邮件箱中加载 gmail api 消息时,并且标签的名称位于希伯来语,我必须在 URL 的查询参数中传递希伯来语标签的名称,否则 gmail 找不到匹配项,并返回 0 个结果。

我尝试使用 MSXML2.ServerXMLHTTP.6.0 发出相同的请求,其中地址未编码,并且确实解决了问题。 但是,我希望能够使用 WebRequest 来做到这一点,因为我的应用程序的整个结构包括处理已经构建在 WebRequest 上的所有类型的 http 请求错误。

所以总而言之,问题是是否可以阻止 WebRequest 对 URL 进行编码

这是我的代码:

Dim request As New WebRequest
pGmailClient.BaseUrl = "https://www.googleapis.com/gmail/v1/"
request.Resource = "users/{userId}/messages"
request.AddUrlSegment "userId", "me"
request.AddQuerystringParam "q", "label:(בדיקה) is:(unread)"
request.AddHeader "Authorization", "Bearer " & pGmailClient.Authenticator.Token

Dim response As WebResponse
Set response = pGmailClient.Execute(request)

这是WebRequest的来源: 网络请求

excel vba http ms-access gmail-api
1个回答
0
投票

你尝试过类似的事情吗

request.Resource = "users/{userId}/messages?q=label:(בדיקה) is:(unread)

也许只是对空格/括号进行编码

也许也看看这个,这可能与这里相关? Gmail API 不尊重主题中的 UTF 编码

© www.soinside.com 2019 - 2024. All rights reserved.