2012-07-18 48 views
0

手頭的任務是登錄網站並使用MATLAB下載報告。我找不到有用的東西。在使用WinHTTPRequest之前,我已經編寫了在VB中執行此操作的代碼,但即使這在MATLAB中也沒有幫助。MATLAB:您如何登錄網站並下載報告?

任何指針,例子或指導將不勝感激。

我在VBA中已經有了代碼,它非常複雜,所以最好的方法是將VBA轉換爲MATLAB。我使用x = actxserver('WinHttp.WinHttpRequest.5.1')來發出HTTP請求。除了x.Option(WinHttpRequestOption_EnableRedirects) = enableRedirect,其中enableRedirect爲true。我試過以下沒有運氣:

WinHttpRequestOption_EnableRedirects = 6; 
set(x, 'Option', WinHttpRequestOption_EnableRedirects, enableRedirect); 
x.set('Option',WinHttpRequestOption_EnableRedirects,enableRedirect); 
x.set('Option',6,enableRedirect); 

有沒有人設法在Matlab中設置此選項?

+0

你爲什麼要使用MATLAB是什麼?爲什麼不是更合適的東西,比如Python? – 2012-07-18 09:44:15

+0

或者網頁瀏覽器? – Chris 2012-07-18 12:33:41

+0

@EitanT不幸的是,我需要使用Matlab,因爲所有其他用戶都知道Matlab,沒有別的。正如我所提到的,我已經在VB和VBA中編寫了代碼,用戶無法調試或修改代碼。 – user1323670 2012-07-26 16:27:31

回答

0

我用下面的代碼:

x = actxserver('WinHttp.WinHttpRequest.5.1'); 
x.Open(sType, sUrl, false); 
if strcmp(sType,'POST'); 
    x.SetRequestHeader('Content-Type', 'application/x-www-form-urlencoded') 
else 
    x.SetRequestHeader('Content-Type', 'text/html') 
end 

x.SetRequestHeader('If-Modified-Since', 'Jan 1 2000 00:00:00 UTC'); 
x.SetRequestHeader('Pragma', 'no-cache'); 

if ~isempty(sCookie) 
    x.SetRequestHeader('Cookie', sCookie); 
end 
x.SetRequestHeader('Accept-Language', 'en-gb'); 
x.SetRequestHeader('Connection', 'Keep-Alive'); 
x.SetRequestHeader('Accept', '*/*'); 
x.SetRequestHeader('UA-CPU', 'x86'); 
x.Send (sSoap) 
writeStringToFile(sFileNameAndPath, x.responseText, true); 
1

Matlab的函數有urlreadftp這看起來很可能是你的好起點。像以往一樣,閱讀文檔。

0

如果更復雜Java方法可以直接在matlab中使用。

例如。建議How do I retrieve a URL from a web site using Java?

看起來像這樣在Matlab:

url = java.net.URL('http://example.com') 
connection = url.openConnection 
connection.setRequestMethod('GET') 
connection.connect() 
stream = connection.getInputStream() 

實際上是相同的 - 不是嗎?當然你會在Java中找到認證的方法。