ZOHO deluge脚本getUrl()函数可以读取HTTP响应标头吗?

时间:2019-01-06 10:37:17

标签: amazon-web-services zoho deluge

当试图使用getUrl()从具有基本.htaccess授权的URL抓取CSV文件时,我被重定向到AMAZON S3位置。 getURL()函数将原始HTTP标头(用于auth)传递给Amazon S3,Amazon S3认为这是Amazon令牌。这会在响应中导致以下错误:

  

仅允许一种身份验证机制;仅应指定X-Amz-Algorithm查询参数,签名查询字符串参数或Authorization标头

除了汤普森·路透(Thompson Reuters)的忠告,我看不到其他任何话题:https://community.developers.thomsonreuters.com/questions/29247/aws-download-x-direct-download-returns-invalid-arg.html

解决方法是从远程服务器接收重定向,查看响应并提取新的(重定向的)URL,并从那里获取CSV文件,而标题中没有auth详细信息。

在洪水脚本ZOHO中有没有办法做到这一点? getUrl()函数似乎真的很基础,文档也很薄。

执行此操作的另一种方法是可以使用CURL的“中间件”应用程序,将CSV保存在远程服务器上,然后使用ZOHO getUrl()提取这些CSV文件。这不是最佳解决方案,但是除非ZOHO允许访问某些HTTP客户端功能,否则我看不到其他方法。

2 个答案:

答案 0 :(得分:1)

要获取响应标头的详细信息,请在 invokeurl 请求中包含 detailed:true

这是一个例子:

// parameters is a Map
// header is a Map

response = invokeurl
[
    url :url
    type :POST
    parameters:parameters
    headers:header
    detailed:true
];

// To see all headers and content
info response;

// To see the http response code
info response.get('responseCode');

// With detailed:true any html or json returned will be put in responseText
// info response.get('responseText');

// To see the all http response headers
info response.get('responseHeader');

// To see a specific http response header
// Note: case matters in the response headers name
// "Content-Type" won't find "content-type"
info response.get('responseHeader').get('content-type');

// was the url redirected to another url?
info response.get('responseHeader').get('location');

// get the redirect url
redirect_url = response.get('responseHeader').get('location')

从那里您可以处理重定向 url 并将其传递给下一个 http 请求。

答案 1 :(得分:0)

在Deluge中,可以使用调用URL任务-https://www.zoho.com/deluge/help/web-data/invokeurl-task.html#response

invokeURL可以将响应标头移交给您,您可以从中获得重定向URL,然后继续进行身份验证。

注意:如果您还有其他问题,请告知我们,或联系support@zohodeluge.com。我们很乐意为您提供帮助。