我能够为 iCloud 文件生成公共 URL。例如https://www.icloud.com/documents/dl/?p=3&t=BAKsXkcDP-p8sdTS8NgBLWRQxE281oe4hogA
从浏览器访问这样的 URL,我会看到一个登录页面,然后文件会自动下载。美好的。
但是,我希望能够从我的 iOS 应用程序(使用 NSURLConnection)下载这个文件。我怎样才能做到这一点?也许... a) 处理 html 标头以某种方式确定直接 URL?b)拦截触发浏览器下载的重定向/刷新?c)以某种方式模仿浏览器以触发下载?
谢谢
PS。请给我白痴的答案-我对html等一无所知。
这是我为上面的间接 URL 获得的 html 响应:
var SC_benchmarkPreloadEvents={headStart:new Date().getTime()}; -->iCloud - 正在加载 ...window.SC=window.SC||{MODULE_INFO:{},LAZY_INSTANTIATION:{}};SC.buildMode="production"; SC.buildNumber="1FCS22.32292";SC.buildLocale="en-us";String.preferredLanguage="en-us";window.SC=window.SC||{MODULE_INFO:{},LAZY_INSTANTIATION:{}} ;SC._detectBrowser=function(userAgent,language){var 版本,webkitVersion,browser={}; userAgent=(userAgent||navigator.userAgent).toLowerCase();语言=语言||navigator.language||navigator.browserLanguage; 版本=browser.version=(userAgent.match(/.*(?:rv|chrome|webkit|opera|ie)/: ([ );]|$)/)||[])[1]; webkitVersion=(userAgent.match(/webkit/(.+?) /)||[])[1];browser.windows=browser.isWindows=!!/windows/.test(userAgent); browser.mac=browser.isMac=!!/macintosh/. test(userAgent)||(/mac os x/.test(userAgent)&&!/like mac os x/.test(userAgent)); browser.lion=browser.isLion=!!(/mac os x 10_7/.test(userAgent)&&!/like mac os x 10_7/.test(userAgent)); browser.iPhone=browser.isiPhone=!!/iphone/.test(userAgent);browser.iPod=browser.isiPod=!!/ipod/.test(userAgent); browser.iPad=browser.isiPad=!!/ipad/.test(userAgent);browser.iOS=browser.isiOS=browser.iPhone||browser.iPod||browser.iPad; browser.android=browser.isAndroid=!!/android/.test(userAgent);browser.opera=/opera/.test(userAgent)?version:0; browser.isOpera=!!browser.opera;browser.msie=/msie/.test(userAgent)&&!browser.opera?version:0; browser.isIE=!!browser.msie;browser.isIE8OrLower=!!(browser.msie&&parseInt(browser.msie,10)<=8); browser.mozilla=/mozilla/.test(userAgent)&&!/(compatible|webkit|msie)/. 测试(用户代理)?版本:0;browser.isMozilla=!!browser.mozilla;browser.webkit=/webkit/.test(userAgent)?webkitVersion:0; browser.isWebkit=!!browser.webkit;browser.chrome=/chrome/.test(userAgent)?version:0; browser.isChrome=!!browser.chrome;browser.mobileSafari=/apple.*mobile/.test(userAgent)&&browser.iOS?webkitVersion:0; browser.isMobileSafari=!!browser.mobileSafari;browser.iPadSafari=browser.iPad&&browser.isMobileSafari?webkitVersion:0; browser.isiPadSafari=!!browser.iPadSafari;browser.iPhoneSafari=browser.iPhone&&browser.isMobileSafari?webkitVersion:0; browser.isiPhoneSafari=!!browser.iphoneSafari;browser.iPodSafari=browser.iPod&&browser.isMobileSafari?webkitVersion:0; browser.isiPodSafari=!!browser.iPodSafari;browser.isiOSHomeScreen=browser.isMobileSafari&&!/apple.*mobile.*safari/. 测试(用户代理);browser.safari=browser.webkit&&!browser.chrome&&!browser.iOS&&!browser.android?webkitVersion:0; browser.isSafari=!!browser.safari;browser.language=language.split("-",1)[0];browser.current=browser.msie?"msie":browser.mozilla?"mozilla":browser. chrome?"chrome":browser.safari?"safari":browser.opera?"opera":browser.mobileSafari?"mobile-safari":browser.android?"android":"unknown"; 返回浏览器};SC.browser=SC._detectBrowser();if(typeof SC_benchmarkPreloadEvents!=="undefined"){SC.benchmarkPreloadEvents=SC_benchmarkPreloadEvents; SC_benchmarkPreloadEvents=undefined}else{SC.benchmarkPreloadEvents={headStart:new Date().getTime()} }SC.setupBodyClassNames=function(){var el=document.body;if(! el){return}var browser,platform,shadows,borderRad,classNames,style; browser=SC.browser.current;platform=SC.browser.windows?"windows":SC.browser.mac?"mac":"other-platform"; style=document.documentElement.style;shadows=(style.MozBoxShadow!==undefined)||(style.webkitBoxShadow!==undefined)||(style.oBoxShadow!==undefined)||(style.boxShadow!==不明确的); borderRad=(style.MozBorderRadius!==undefined)||(style.webkitBorderRadius!==undefined)||(style.oBorderRadius!==undefined)||(style.borderRadius!==undefined); classNames=el.className?el.className.split(" "):[];if(shadows){classNames.push("box-shadow") }if(borderRad){classNames.push("border-rad") }classNames.push(browser);if(browser==="chrome"){classNames.push("safari") }classNames.push(platform); "/applications/documents/sproutcore/ace/en-us/1FCS22.32292/stylesheet-no-repeat@2x.png","/applications/documents/sproutcore/ace/en-us/1FCS22.32292/stylesheet-repeat -x@2x.png","/applications/documents/sproutcore/ace/en-us/1FCS22.32292/stylesheet-repeat-y@2x.png","/applications/documents/download/en-us/1FCS22 .32292/stylesheet-no-repeat@2x.png","/applications/documents/download/en-us/1FCS22.32292/stylesheet-repeat-x@2x.png"] }else{styles=["/applications /documents/download/en-us/1FCS22.32292/stylesheet-packed.css"]; SC.APP_IMAGE_ASSETS=["/applications/documents/sproutcore/desktop/en-us/1FCS22.32292/stylesheet-no-repeat.png","/applications/documents/coreweb/views/en-us/1FCS22.32292/ stylesheet-no-repeat.png","/applications/documents/sproutcore/ace/en-us/1FCS22.