2012-05-18 25 views
0

我需要从AppleScript下载.png文件。问题是我在 的代理服务器后面,所以当我使用时:通过代理使用AppleScript下载文件

1)curl,脚本卡住,从不连接。

set image to "http://upload.wikimedia.org/wikipedia/commons/6/63/Wikipedia-logo.png" 
set thePath to (path to desktop as Unicode text) & "test.png" 

do shell script "curl -f " & image & " -o " & the POSIX path of thePath 

2)URL访问脚本,脚本也被卡住

set image to "http://upload.wikimedia.org/wikipedia/commons/6/63/Wikipedia-logo.png" 
set thePath to (path to desktop as Unicode text) & "test.png" 

tell application "URL Access Scripting" 
    download image to file thePath replacing yes 
end tell 

我知道有在卷曲指定代理服务器的方式:

do shell script "curl -x " & HTTPProxy & ":" & HTTPPort & "-f " ... 

但我不不知道HTTProxy和HTTPort的值是什么,因为我的系统使用自动代理发现。即使如果有这些值,我的脚本就会在我的代理和其他代理背后的其他系统中工作。

因此,我想知道是否有办法告诉curl或URL访问脚本使用系统代理,或者如果有系统变量存储这些代理值。

在此先感谢

解决

我发现了一种通过设置HTTPPROXY和HTTPORT来做到这一点:

set HTTPProxy to (do shell script "networksetup -getwebproxy \"Ethernet\" | grep \"Server:\" | awk -F \": \" '{print $2}'") 
set HTTPPort to (do shell script "networksetup -getwebproxy \"Ethernet\" | grep \"Port:\" | awk -F \": \" '{print $2}'") 

我不知道是否有一个更合适的方法要做到这一点,但这似乎工作:)

+0

欢迎。如果你找到自己问题的解决方案,那么接受的程序就是将它作为答案发布,并接受它(如果没有其他更好的方法,至少没有更好的答案)。这不仅完全可以做,它有助于保持网站整洁,因为您的问题将被归档为“已回答” - 现在,它被视为“开放”。 – kopischke

回答

0

我找到了一种方法来设置HTTPProxy和HTTPort:

set HTTPProxy to (do shell script "networksetup -getwebproxy \"Ethernet\" | grep \"Server:\" | awk -F \": \" '{print $2}'") 
set HTTPPort to (do shell script "networksetup -getwebproxy \"Ethernet\" | grep \"Port:\" | awk -F \": \" '{print $2}'") 

我不知道是否有这样做一个更合适的方法,但是这似乎工作:)到堆栈溢出