[英]How to download file from URL with a lot of redirects
我正在嘗試使用 Apps Script (JS) 將 XML 文件的內容從 URL 獲取到 Google Sheets
不幸的是 URL 有很多奇怪的重定向,我在服務器端對此沒有影響。 我需要在 JS 的身邊處理它。 在 Firefox 中我能夠正常下載文件,但在 JS 中這是一個挑戰。
幾天來我一直在尋找解決方案,但沒有任何幫助。 JS 就是無法獲取文件內容。
網址: https://www.nife.pl/getfile-woocommerce/b55a488229b69d7c4ddf2a9f1a6b5dcb.xml
: https://www.nife.pl/getfile-woocommerce/b55a488229b69d7c4ddf2a9f1a6b5dcb.xml
我試過那些:
=importXml("https://www.nife.pl/getfile-woocommerce/b55a488229b69d7c4ddf2a9f1a6b5dcb.xml"; "//variant")
function test(){
var url = 'https://www.nife.pl/getfile-woocommerce/b55a488229b69d7c4ddf2a9f1a6b5dcb.xml';
var xml = UrlFetchApp.fetch(url,{'followRedirects': true, 'muteHttpExceptions': true}).getContentText();
var jsonV = XML_to_JSON(xml);
Logger.log(jsonV);
}
var xml = XmlService.parse('https://www.nife.pl/getfile-woocommerce/b55a488229b69d7c4ddf2a9f1a6b5dcb.xml',{'followRedirects': true, 'muteHttpExceptions': true});
沒有任何幫助。
知道如何從這個 XML 獲取內容到 GoogleSheets 嗎?
以下代碼有效:
function getXml() {
var response = UrlFetchApp.fetch(
'http://www.nife.pl/getfile-woocommerce/b55a488229b69d7c4ddf2a9f1a6b5dcb.xml?waluta=EUR',
{
headers: {Cookie: 'ip2loc=isset'},
}
);
if (response.getResponseCode() == 200) {
var content = response.getContentText();
Logger.log(content.length); // 1612024.0 in my test
}
}
請注意,當 HTTP 響應代碼等於302時,上述 URL 取自第一個響應“Location”標頭。 相同的響應顯示了另一個標題:“Set-cookie:ip2loc=isset”。 我問這個cookie對於接收完整數據很重要,所以我們應該在請求中將它作為標頭實現。 確實,在更正 URL 並添加 cookie 標頭后,我們像任何瀏覽器一樣獲取 XML。
通過分析瀏覽器發送的請求,看來,你必須在請求頭中添加以下值
{'cookie': 'ip2loc=isset'}
所以你的函數看起來像這樣:
function myFunction() {
var url = 'http://www.nife.pl/getfile-woocommerce/b55a488229b69d7c4ddf2a9f1a6b5dcb.xml';
var response = UrlFetchApp.fetch(url, { headers : {'cookie': 'ip2loc=isset'}} ).getContentText();
Logger.log(response);
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.