iphone本地架設(shè)http服務(wù)器

簡介

目前一些應(yīng)用里有用到在Iphone上架設(shè)http服務(wù)器,其主要用在以下幾個(gè)方面

  1. 當(dāng)需要在iphone本地架設(shè)一個(gè)小型http網(wǎng)站碱工,供用戶來使用娃承。
  2. 或者希望通過自己的應(yīng)用把相應(yīng)的文件導(dǎo)入到電腦里,例如:目前大多數(shù)視頻應(yīng)用怕篷,把電腦上的視頻導(dǎo)入到本應(yīng)用历筝。(必須在同一WIFI)
  3. 預(yù)加載視頻。在瀏覽網(wǎng)上視頻時(shí)候廊谓,在用到hls等視頻切片技術(shù)的視頻源時(shí)候梳猪,可以在本地架設(shè)一個(gè)http服務(wù)器預(yù)下載后邊的視頻,進(jìn)行預(yù)加載蒸痹,以達(dá)到視頻播放流暢春弥。

在iOS上呛哟,目前推薦使用CocoaHTTPServer開源框架。
CocoaHTTPServer官方介紹

CocoaHTTPServer is a small, lightweight, embeddable HTTP server for Mac OS X or iOS applications.

Sometimes developers need an embedded HTTP server in their app.
Perhaps it's a server application with remote monitoring.
Or perhaps it's a desktop application using HTTP for the communication backend.
Or perhaps it's an iOS app providing over-the-air access to documents.
Whatever your reason, CocoaHTTPServer can get the job done. It provides:

Built in support for bonjour broadcasting
IPv4 and IPv6 support
Asynchronous networking using GCD and standard sockets
Password protection support
SSL/TLS encryption support
Extremely FAST and memory efficient
Extremely scalable (built entirely upon GCD)
Heavily commented code
Very easily extensible
WebDAV is supported too!

環(huán)境

系統(tǒng) 開發(fā)工具
iOS9 xCode 7.3

用法

以在本地創(chuàng)建http web為例

在官網(wǎng)下載源碼工程

這里使用的是一個(gè)小forkcocoa-web-resource

Samples.png
  1. Core文件夾 架設(shè)http服務(wù)器Core 核心類
  2. Extensions 文件夾 WebDAV實(shí)現(xiàn)類
  3. Sample 文件夾 CocoaHTTPServer基本使用
  4. Vendor 第三方日志類

創(chuàng)建工程

創(chuàng)建一個(gè)名為iPhoneLocalHttpServer的Demo工程

截屏16_5_29_上午11_36.png

引入庫

加載資源

資源加載失敗打不開網(wǎng)頁404錯(cuò)誤

iPhoneLocalHttpServer_xcodeproj.png

定義

#import "HTTPServer.h"


interface ViewController ()<UIWebViewDelegate,WebFileResourceDelegate>
{
    HTTPServer *httpServer;
    UIWebView *mWebView;//測試webview
    UILabel *urlLabel;//顯示ip端口的
    NSMutableArray *fileList;
    
}

實(shí)現(xiàn)

- (void)viewDidLoad {
    [super viewDidLoad];
    // Do any additional setup after loading the view, typically from a nib.
    
    
    urlLabel = [[UILabel alloc] initWithFrame:CGRectMake(0, 20, [UIScreen mainScreen].bounds.size.width, 25)];
    [self.view addSubview:urlLabel];
    
    // set up the http server
    httpServer = [[HTTPServer alloc] init];
    [httpServer setType:@"_http._tcp."];
    [httpServer setPort:8088];
    [httpServer setName:@"iPhoneLocalHttpServer"];
    [httpServer setupBuiltInDocroot];
    httpServer.fileResourceDelegate = self;
    
    NSError *error = nil;
    BOOL serverIsRunning = [httpServer start:&error];
    if(!serverIsRunning)
    {
        NSLog(@"Error starting HTTP Server: %@", error);
    }
    [urlLabel setText:[NSString stringWithFormat:@"http://%@:%d", [httpServer hostName], [httpServer port]]];
    
    
    mWebView = [[UIWebView alloc] initWithFrame:CGRectMake(0, 64, urlLabel.frame.size.width, [UIScreen mainScreen].bounds.size.height - 64)];
    mWebView.delegate = self;
    mWebView.scalesPageToFit = YES;
    [self.view addSubview:mWebView];
    
}

- (void)viewDidAppear:(BOOL)animated
{
    [super viewDidAppear:animated];
    dispatch_after(dispatch_time(DISPATCH_TIME_NOW, (int64_t)(0.3 * NSEC_PER_SEC)), dispatch_get_main_queue(), ^{
        NSURLRequest *request = [[NSURLRequest alloc] initWithURL:[NSURL URLWithString:[NSString stringWithFormat:@"http://%@:%d", @"127.0.0.1", [httpServer port]]]];
        [mWebView loadRequest:request];
    });
}

模擬器運(yùn)行:

截屏16_5_29_下午3_20.png

safari打開

使用模擬器safari打開127.0.0.1:8088(真機(jī)上不行匿沛,還不知道原因)

截屏16_5_29_下午3_21.png

iOS http設(shè)置

  1. 在Filter中搜索Info.plist扫责,選擇Info.plist進(jìn)行編輯


  2. 按照上面提到的方式添加信息,正確的修改會(huì)看到下圖這個(gè)樣子逃呼,注意類型NSAppTransportSecurity為Dictionary鳖孤,NSAllowsArbitraryLoads為Boolean,復(fù)制粘貼的時(shí)候抡笼,不要多了空格苏揣,segment fault 頁面上直接復(fù)制,經(jīng)常會(huì)多一個(gè)出空格蔫缸!


Demo

git 地址

兩個(gè)GCDWebServer

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末腿准,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子拾碌,更是在濱河造成了極大的恐慌,老刑警劉巖街望,帶你破解...
    沈念sama閱讀 217,542評(píng)論 6 504
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件校翔,死亡現(xiàn)場離奇詭異,居然都是意外死亡灾前,警方通過查閱死者的電腦和手機(jī)防症,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,822評(píng)論 3 394
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來哎甲,“玉大人蔫敲,你說我怎么就攤上這事√棵担” “怎么了奈嘿?”我有些...
    開封第一講書人閱讀 163,912評(píng)論 0 354
  • 文/不壞的土叔 我叫張陵,是天一觀的道長吞加。 經(jīng)常有香客問我裙犹,道長,這世上最難降的妖魔是什么衔憨? 我笑而不...
    開封第一講書人閱讀 58,449評(píng)論 1 293
  • 正文 為了忘掉前任叶圃,我火速辦了婚禮,結(jié)果婚禮上践图,老公的妹妹穿的比我還像新娘掺冠。我一直安慰自己,他們只是感情好码党,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,500評(píng)論 6 392
  • 文/花漫 我一把揭開白布德崭。 她就那樣靜靜地躺著悍及,像睡著了一般。 火紅的嫁衣襯著肌膚如雪接癌。 梳的紋絲不亂的頭發(fā)上心赶,一...
    開封第一講書人閱讀 51,370評(píng)論 1 302
  • 那天,我揣著相機(jī)與錄音缺猛,去河邊找鬼缨叫。 笑死,一個(gè)胖子當(dāng)著我的面吹牛荔燎,可吹牛的內(nèi)容都是我干的耻姥。 我是一名探鬼主播,決...
    沈念sama閱讀 40,193評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼有咨,長吁一口氣:“原來是場噩夢啊……” “哼琐簇!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起座享,我...
    開封第一講書人閱讀 39,074評(píng)論 0 276
  • 序言:老撾萬榮一對(duì)情侶失蹤婉商,失蹤者是張志新(化名)和其女友劉穎,沒想到半個(gè)月后渣叛,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體丈秩,經(jīng)...
    沈念sama閱讀 45,505評(píng)論 1 314
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,722評(píng)論 3 335
  • 正文 我和宋清朗相戀三年淳衙,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了蘑秽。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 39,841評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡箫攀,死狀恐怖肠牲,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情靴跛,我是刑警寧澤缀雳,帶...
    沈念sama閱讀 35,569評(píng)論 5 345
  • 正文 年R本政府宣布,位于F島的核電站汤求,受9級(jí)特大地震影響俏险,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜扬绪,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,168評(píng)論 3 328
  • 文/蒙蒙 一竖独、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧挤牛,春花似錦莹痢、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,783評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽航瞭。三九已至,卻和暖如春坦辟,著一層夾襖步出監(jiān)牢的瞬間刊侯,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 32,918評(píng)論 1 269
  • 我被黑心中介騙來泰國打工锉走, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留滨彻,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 47,962評(píng)論 2 370
  • 正文 我出身青樓挪蹭,卻偏偏與公主長得像择葡,于是被迫代替她去往敵國和親脊框。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,781評(píng)論 2 354

推薦閱讀更多精彩內(nèi)容

  • Spring Cloud為開發(fā)人員提供了快速構(gòu)建分布式系統(tǒng)中一些常見模式的工具(例如配置管理翩蘸,服務(wù)發(fā)現(xiàn)畦幢,斷路器军拟,智...
    卡卡羅2017閱讀 134,656評(píng)論 18 139
  • 發(fā)現(xiàn) 關(guān)注 消息 iOS 第三方庫蠕趁、插件垃它、知名博客總結(jié) 作者大灰狼的小綿羊哥哥關(guān)注 2017.06.26 09:4...
    肇東周閱讀 12,103評(píng)論 4 62
  • Android 自定義View的各種姿勢1 Activity的顯示之ViewRootImpl詳解 Activity...
    passiontim閱讀 172,116評(píng)論 25 707
  • 那一日,你计技,黑色的長發(fā)從肩上垂下喜德,白色的襯衣剛好就到腰間 電梯里只有你我,好安靜 能聽見心跳
    Jason_Fu閱讀 226評(píng)論 0 2
  • 文|月華 每周末好書推薦垮媒,本周末推薦的是《做事的常識(shí)》,日本作家小倉廣的作品航棱。 1 如果真的讓我向你推薦一本可以幫...
    步月兒閱讀 691評(píng)論 61 42