2

我正在尝试http://173.192.48.92/test.php使用 WSH 下的 JScript 下载此测试页面。

我正在使用这样的 WinHttp 组件:

WinHTTP = WScript.CreateObject('WinHttp.WinHttpRequest.5.1') ;
WinHTTP.Open( 'GET', 'http://173.192.48.92/test.php' ) ;
WinHTTP.Send() ;
WScript.echo( WinHTTP.responseText ) ;

但我不能让它工作。WinHttp 触发运行时错误,因为该页面有Content-Type: text/html; charset=UTF-8但该页面的实际内容是 latin1。

有没有办法可以使用 WSH 获取 URL 的内容,无论该内容是什么?

PS:我使用的是 Windows Vista SP2 和 IE9

4

1 回答 1

2

我不确定我是否会解决您的问题,但至少会尝试。

当您在 WSH 中运行脚本时,IE 版本无关紧要,因为它们使用单​​独的脚本主机。您的脚本在我的 XP x64 下运行良好。

好的,我想到的是尝试XMLHttpRequest对象。我将发布 VBScript 代码,如果需要,我认为将其转换为 JavaScript 并不难。

URL = "http://173.192.48.92/test.php"
Set http = CreateObject("Microsoft.XmlHttp")

http.open "GET", URL, False
http.send ""

If http.status <> 200 Then 'if not OK
    WScript.Echo "Response status " & _
        http.status & " - " & http.statusText
    WScript.Quit  'exit the script
End If

WScript.Echo http.responseText

如果编码是问题,那么您应该在最后一行出现错误。如果是这样,则删除此行并尝试使用ADO Stream object,即将其附加到上面的代码:

Set stream = CreateObject("ADODB.Stream")
With stream
    .Open
    .Type     = 2 'text
    .Position = 0
    '.Charset  = "utf-8"
    .Charset  = "latin1"
    .WriteText http.responseText
    .SaveToFile "output.txt", 2
    .Close
End With

在我的测试中,它适用于字符集 UTF-8 和 Latin1,我希望这能解决问题。

好吧,如果那没有帮助,那么请告诉我您遇到的那种错误。

于 2013-02-27T06:23:39.903 回答