2013-03-26 2 views
0

Для моего приложения html мне нужно скачать JDK напрямую. Эта команда Wget, кажется, работает для негоКак перевести команду wget с настраиваемым заголовком на vbscript или javascript?

wget --no-cookies --header "Cookie: gpw_e24=http%3A%2F%2Fwww.oracle.com" "http://download.oracle.com/otn-pub/java/jdk/7/jdk-7-linux-x64.tar.gz" 

Как я могу перевести это Wget, который отправляет пользовательский заголовок в идеале VBSCRIPT линии (я предпочитаю VBScript, но будет довольствоваться JavaScript, если я должен). Постскриптум Я думаю, что - no-cookie является необязательным, но не уверен. Причина, по которой я не могу использовать ссылку прямой загрузки, заключается в том, что оракул требует, чтобы пользователи нажимали «Принять соглашение» на странице загрузки ниже.

Эта ссылка для последней загрузки HTML страницы

http://www.oracle.com/technetwork/java/javase/downloads/jdk7-downloads-1880260.html

и это последняя прямая ссылка .exe (после нажатия кнопки ПРИНЯТЬ ДОГОВОР)
http://download.oracle.com/otn-pub/java/jdk/7u17-b02/jdk-7u17-windows-x64.exe

или любым другим способом для обхода проблемы соглашения о согласии?

Это мой код vbscript, который * дает «неуказанную ошибку» * в строке 4 с setRequestHeader. значение ine gpw_e24 Я попробовал значение, указанное выше, тоже не работал.

Set objXMLHTTP = CreateObject("MSXML2.XMLHTTP") 
URL="http://download.oracle.com/otn-pub/java/jdk/7u17-b02/jdk-7u17-windows-x64.exe" 
saveto="c:\java.exe"  
objXMLHTTP.setRequestHeader "Cookie", "gpw_e24=http%3A%2F%2Fwww.oracle.com" 
objXMLHTTP.open "POST", URL, false 
objXMLHTTP.send() 

If objXMLHTTP.Status = 200 Then 
Set objADOStream = CreateObject("ADODB.Stream") 
objADOStream.Open 
objADOStream.Type = 1 'adTypeBinary 

objADOStream.Write objXMLHTTP.ResponseBody 
objADOStream.Position = 0 'Set the stream position to the start 

Set objFSO = Createobject("Scripting.FileSystemObject") 
If objFSO.Fileexists(saveTo) Then objFSO.DeleteFile saveTo 
Set objFSO = Nothing 

objADOStream.SaveToFile saveTo 
objADOStream.Close 
Set objADOStream = Nothing 
End if 

Set objXMLHTTP = Nothing 

' Done 
WScript.Quit 
+0

Почему бы вам не просто взять jdk самостоятельно? –

+0

@Jack thats мой план резервного копирования, если все остальное не удается: D –

ответ

1

Чтобы скачать файл необходимо добавить заголовок запроса с именем Cookie и значение gpw_e24 = HTTP% 3A% 2F% 2Fwww.oracle.com

с помощью кода из vbscript to download a file (bypassing invalid certificate errors) вы следует попробовать добавить

xHttp.setRequestHeader "Cookie", "gpw_e24=http%3A%2F%2Fwww.oracle.com" 

В качестве альтернативы вы можете взять wget.exe со сценарием и назовите его

Скачать двоичные файлы пакета из http://gnuwin32.sourceforge.net/packages/wget.htm (вам потребуется только wget.exe, могут быть некоторые Required Dll-s)

UPD: Вероятно wget.exe из этого бинарники http://community.openscg.com/se/oscg_nixutils.jsp будет лучшим выбором (из-за каких-либо зависимостей)

UPD: Я попробовал это, но oracle.com возвращает 403. Ваша команда WGET также не работает.

Set objXMLHTTP = CreateObject("MSXML2.XMLHTTP") 
URL="http://download.oracle.com/otn-pub/java/jdk/7u17-b02/jdk-7u17-windows-x64.exe" 
saveto="c:\\Users\\Sanya_Zol\\INET_ALL\\2013\\_tmp\\20130326\\java-dl.exe"  
objXMLHTTP.open "POST", URL, false 
objXMLHTTP.setRequestHeader "Cookie", "gpw_e24=http%3A%2F%2Fwww.oracle.com%2Ftechnetwork%2Fjava%2Fjavase%2Fdownloads%2Fjdk7-downloads-1880260.html" 
objXMLHTTP.send() 

If objXMLHTTP.Status = 200 Then 
    Set objADOStream = CreateObject("ADODB.Stream") 
    objADOStream.Open 
    objADOStream.Type = 1 'adTypeBinary 

    objADOStream.Write objXMLHTTP.ResponseBody 
    objADOStream.Position = 0 'Set the stream position to the start 

    Set objFSO = Createobject("Scripting.FileSystemObject") 
    If objFSO.Fileexists(saveTo) Then objFSO.DeleteFile saveTo 
    Set objFSO = Nothing 

    objADOStream.SaveToFile saveTo 
    objADOStream.Close 
    Set objADOStream = Nothing 
    Set objXMLHTTP = Nothing 
Else 
    MsgBox objXMLHTTP.Status 
End if 
+0

, который звучит очень promising.trying это сейчас –

+0

получение неуказанной ошибки :(Я обновляю вопрос, чтобы вставить мой код vbscript сейчас –

+0

objXMLHTTP.setRequestHeader следует вызывать ** после * * objXMLHTTP.open –