从浏览器访问这样的URL,我看到一个登陆页面,然后自动下载文件.精细.
但是,我希望能够从我的iOS应用程序(使用NSURLConnection)下载此文件.我怎样才能做到这一点?也许…
a)处理HTML标题以某种方式确定直接URL?
b)拦截在浏览器上触发下载的重定向/刷新?
c)以某种方式模仿浏览器以触发下载?
谢谢
PS.请给我白痴的答案 – 我对HTML等毫无头绪
以下是我为上述间接URL获取的HTML响应:
解决方法 截至2012年7月,以下似乎有效.但是不能保证苹果不会改变他们生成这些的计划,并且他们可能会将此视为私有API并拒绝您的应用程序.因此使用风险自负.var SC_benchmarkPreloadEvents={@R_301_6882@Start:new Date().getTime()}; –>iCloud – Loading …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 version,webkitVersion,browser={};
userAgent=(userAgent||navigator.userAgent).tolowerCase();language=language||navigator.language||navigator.browserLanguage;
version=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)/.test(userAgent)?version: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/.test(userAgent);
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”;
return browser};SC.browser=SC._detectbrowser();if(typeof SC_benchmarkPreloadEvents!==”undefined”){SC.benchmarkPreloadEvents=SC_benchmarkPreloadEvents;
SC_benchmarkPreloadEvents=undefined}else{SC.benchmarkPreloadEvents={@R_301_6882@Start: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!==undefined);
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);var IEVersion=parseInt(SC.browser.msIE,10);if(IEVersion){if(IEVersion===7){classnames.push(“ie7”)
}else{if(IEVersion===8){classnames.push(“ie8”)}else{if(IEVersion===9){classnames.push(“IE9”)
}}}}if(SC.browser.mobileSafari){classnames.push(“mobile-safari”)}if(“createtouch” in document){classnames.push(“touch”)
}el.classname=classnames.join(” “)};(function(){var styles=[];if(window.devicePixelRatio==2||window.location.search.indexOf(“2x”)>-1){styles=[“/applications/documents/download/en-us/1FCS22.32292/stylesheet@2x-packed.CSS”];
SC.APP_IMAGE_ASSETS=[“/applications/documents/sproutcore/desktop/en-us/1FCS22.32292/stylesheet-no-repeat@2x.png”,”/applications/documents/coreweb/vIEws/en-us/1FCS22.32292/stylesheet-no-repeat@2x.png”,”/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.32292/stylesheet-no-repeat.png”,”/applications/documents/sproutcore/ace/en-us/1FCS22.32292/stylesheet-repeat-x.png”,”/applications/documents/sproutcore/ace/en-us/1FCS22.32292/stylesheet-repeat-y.png”,”/applications/documents/download/en-us/1FCS22.32292/stylesheet-no-repeat.png”,”/applications/documents/download/en-us/1FCS22.32292/stylesheet-repeat-x.png”]
}var @R_301_6882@=document.getElementsByTagname(“@R_301_6882@”)[0],len=styles.length,IDx,CSS;for(IDx=0;
IDxSC.benchmarkPreloadEvents.@R_301_6882@End=new Date().getTime();SC.benchmarkPreloadEvents.bodyStart=new Date().getTime();if(SC.setupBodyClassnames){SC.setupBodyClassnames()};SC.benchmarkPreloadEvents.bodyEnd=new Date().getTime();
URL有两个重要参数,p和t.第一个似乎识别服务器,而第二个识别实际文件.直接下载链接是通过将这些值插入此URL来实现的:
https://p[p]-ubiquityws.icloud.com/ws/file/[t]
看看你的例子:
https://www.icloud.com/documents/dl/?p=3&t=BAKsXkcDP-p8sdTS8NgBLWRQxE281oe4hogA
p为3,t为BAKsXkcDP-p8sdTS8NgBLWRQxE281oe4hogA.所以你的直接下载链接就是
https://p3-ubiquityws.icloud.com/ws/file/BAKsXkcDP-p8sdTS8NgBLWRQxE281oe4hogA
每当我发布到iCloud的链接时,p都是01;因此,您可能需要对您的值进行零填充,在这种情况下您的URL就是这样
https://p03-ubiquityws.icloud.com/ws/file/BAKsXkcDP-p8sdTS8NgBLWRQxE281oe4hogA
很高兴知道这是否必要.
总结以上是内存溢出为你收集整理的html – 我有一个iCloud文件的公共URL,如何在iOS中下载DIRECT链接?全部内容,希望文章能够帮你解决html – 我有一个iCloud文件的公共URL,如何在iOS中下载DIRECT链接?所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)