WinHttpRequest之get_ResponseText乱码问题

客户端向Web服务器Send()之后,就可以等待接收服务器Response的消息体,但是无论是下面的哪种方法接收到的消息体的中文字符都是乱码:

IWinHttpRequestPtr pHttpReq;


方法一:

_bstr_t bStrText = pHttpReq->ResponseText;
		CString strText = bStrText;

方法二:

BSTR  bstr = NULL;
	hr = pHttpReq->get_ResponseText(&bstr);
	CString str = bstr;

如图:


改用下面方法将中文乱码问题解决掉了:

_variant_t varRspBody = pHttpReq->GetResponseBody();
	ULONG dataLen = varRspBody.parray->rgsabound[0].cElements;
	char *pContentBuffer = (char *)varRspBody.parray->pvData;
	CString strCntBuffer;
	strCntBuffer = pContentBuffer;

如图:


### 回答1: VB中使用WinHTTPRequest下载文件十分简单,只需几行代码即可完成。 首先,我们需要创建一个WinHTTPRequest对象,并设置其相关属性。然后使用Open方法指定下载文件的URL,并使用Send方法发送下载请求。 接着,我们需要创建一个文件流对象,用于保存下载的文件内容。然后使用WinHTTPRequestResponseBody属性获取下载的文件内容,并将其写入文件流。 最后,关闭文件流,并释放WinHTTPRequest对象。 下面是一个简单的示例代码: ```vb Dim http As New WinHttp.WinHttpRequest Dim fileStream As Object ' 设置WinHTTPRequest的属性 http.Option(WinHttpRequestOption_EnableRedirects) = True http.Option(WinHttpRequestOption_SslErrorIgnoreFlags) = &H3300 ' 发送下载请求 http.Open "GET", "http://example.com/samplefile.txt", False http.Send ' 创建保存下载内容的文件流 Set fileStream = CreateObject("ADODB.Stream") fileStream.Type = 1 ' 二进制 ' 将下载的文件内容写入文件流 fileStream.Open fileStream.Write http.ResponseBody fileStream.SaveToFile "C:\Downloads\samplefile.txt" fileStream.Close ' 释放WinHTTPRequest对象 Set http = Nothing ``` 上述代码假设我们要下载的文件是位于`http://example.com/samplefile.txt`,并将其保存在`C:\Downloads\samplefile.txt`路径下。你可以将代码中的URL和保存路径修改为你需要的文件。 以上就是使用VBWinHTTPRequest下载文件的简单示例,希望能够对你有所帮助! ### 回答2: 使用VBScript中的WinHttpRequest对象可以简单地实现文件下载。下面是一个使用WinHttpRequest对象下载文件的简单示例: ```vbscript Dim WinHttpReq ' 声明WinHttpRequest对象 Dim url, fileName ' 定义下载文件的URL和保存的文件名 url = "http://example.com/file.pdf" ' 要下载的文件的URL fileName = "C:\Downloads\file.pdf" ' 要保存的文件路径 ' 创建WinHttpRequest对象 Set WinHttpReq = CreateObject("WinHttp.WinHttpRequest.5.1") ' 发送GET请求以下载文件 WinHttpReq.Open "GET", url, False WinHttpReq.Send ' 检查响应状态 If WinHttpReq.Status = 200 Then ' 保存下载的文件 Set stream = CreateObject("ADODB.Stream") stream.Open stream.Type = 1 stream.Write WinHttpReq.ResponseBody stream.SaveToFile fileName, 2 stream.Close MsgBox "文件下载完成。" Else MsgBox "下载文件失败。" End If ``` 上述代码首先声明了`WinHttpRequest`对象和要下载的文件的URL以及保存的文件路径。然后创建`WinHttpRequest`对象,使用`Open`方法发送GET请求以下载文件,并使用`Send`方法发送该请求。 然后,我们检查响应状态是否为200,即请求是否成功。如果成功,我们通过创建`ADODB.Stream`对象来保存下载的文件,并使用`SaveToFile`方法将响应的`ResponseBody`写入文件流中,最后关闭流。 最后,我们使用`MsgBox`显示一个消息框,告诉用户文件是否成功下载。 请注意,下载的文件应该具有正确的权限,并且要保存的文件路径必须是存在且可写的。 ### 回答3: 在使用VBWinHttpRequest对象下载文件时,可以按照以下步骤进行操作: 1. 首先,创建一个WinHttpRequest对象,并设置其相关属性: ``` Dim http As WinHttpRequest Set http = New WinHttpRequest http.Option(WinHttpRequestOption_EnableRedirects) = True http.Option(WinHttpRequestOption_SslErrorIgnoreFlags) = &H3300 ``` 2. 然后,使用Open方法指定请求的URL: ``` http.Open "GET", "http://example.com/file.txt", False ``` 3. 发送请求并获取响应: ``` http.Send ``` 4. 检查请求是否成功,并将响应保存到本地文件: ``` If http.Status = 200 Then Dim adodbStream As Object Set adodbStream = CreateObject("ADODB.Stream") adodbStream.Open adodbStream.Type = 1 '二进制 adodbStream.Write http.ResponseBody adodbStream.SaveToFile "C:\download\file.txt", 2 '保存到本地文件 adodbStream.Close Set adodbStream = Nothing End If ``` 以上是通过VBWinHttpRequest对象进行文件下载的基本步骤。需要注意的是,下载文件的URL必须是有效可访问的,并且本地保存文件的路径需要存在且有写入权限。此外,还可以根据具体需求添加错误处理、进度监测等功能。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

小米的修行之路

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值