![55b33cc71c28398ede26d0618cdaf644.png](https://i-blog.csdnimg.cn/blog_migrate/3c02002825600c8d499b3086a6ab7158.jpeg)
给自己的iOS app写网络功能,从零学起,找资料,配置apache服务器。捣鼓几下终于可以浏览器访问了。但MKNetworkKit玩不转,怒而转AFNetworking。
然后GET方式下载数据也成功了。但上传一直弄不好。
反复看视频教程发现用POST请求必须在服务器端有脚本(html或php)支持,但现在我还不会啊。想省事用PUT方法,视频里介绍apache扩展一个webDav服务器,上传文件就像拖拽一样方便。结果一省就省出事来了,昨天捣鼓了一天,头发掉了大把。而今天戏剧性地跑通了。开贴记录一下。
1、配置webDav
阿帕奇apache服务器和webDav服务器快速配置。 - 董铂然 - 博客园www.cnblogs.com![bd754e3a8e67183d2af02b1ff71187dd.png](https://i-blog.csdnimg.cn/blog_migrate/83569f9ebeb7b4f7dc55d41d18c16de3.jpeg)
一开始搜到的是这篇博客,由于已经配置过apache,所以改文件什么的还比较好弄。
需要注意的是这几个文件都被系统上锁,即使输入一万遍密码给了一万个账户权限依然无法解锁。外面告诉你已经有读写权限了,点开文件修改的时候告诉你要解锁,点Unlock有跟你说你无权解锁。后面翻到这篇博客才知道要用sudo su。不知道乔布斯时代苹果的系统是不是这种辜儿设定。
苹果电脑上修改 httpd.conf文件异常www.maomao365.com![7f648981bd4fce2a76c8bee08022ed16.png](https://i-blog.csdnimg.cn/blog_migrate/8c1f34c5824602f54ce9915b3852aabf.png)
httpd.conf的修改还好,就是打开几个webdav相关的功能。
httpd-dav.conf的修改我留了个心眼,为了一致性把webdav服务器文件夹位置改成了apache服务器的子路径/Users/计算机名/myweb。事实证明还好留了个心眼,当前版本的mac OS是不允许修改/usr权限的,用sudo su也不行,mmp。
然而接下来就呵呵了,接下来的设置是需要用脚本的(视频里也是),然而提供的链接已经失效(况且直接用脚本不清楚它做了什么也不放心)。于是乎又找啊找,找到一篇手把手教的博客:
通过终端命令行进行WebDav服务器配置,实现使用PUT进行文件上传【图文详解】_萧动的专栏-CSDN博客blog.csdn.net![34820346fc03df2ef370242f74ce9818.png](https://i-blog.csdnimg.cn/blog_migrate/dd643b63157bac5a98f856fc4077fa9e.jpeg)
得知脚本所做的内容大致是创建一个admin及密码文件、创建upload文件夹以及存Davlock数据的文件夹并设定其权限。做完这一步大功告成,赶紧去访达连接服务器测试吧!图样图森破!要先sudo apachectl -k restart重启apache啦!
总之,输入用户名admin密码******,可以看到服务器uploads了。第一部分完成。
2、恼人的500
然后我立即点开XCode测试我的代码,果不其然上传失败。这个怪我没仔细看视频,在配置webdav之后的下一集详细讲了怎么配置用户名密码又怎么UTF8转码又base64转码变成一堆英文密码再setValue进request的过程。这也不难嘛,不看视频百度几下也是能搜到的。
改完代码,依然上传失败。
错误代码:Code=-1011 "Request failed: internal server error (500)
虽然能百度到一些似是而非的解决方案,但是大部分还是讲这是服务器没有设置好。怎么会?我一步一步照着来设置的webdav啊。关键是,我还能怎么改设置?Stackoverflow让我去找后端去,我上哪去找后端?哦,我就是后端,那没事了。
AFNetworking 3.0 Error: “Request failed: internal server error (500)”stackoverflow.com![10cbf4fefb39d74c065bc358b023d741.png](https://i-blog.csdnimg.cn/blog_migrate/2f978357ffbf86b669fa6c84dbabef85.png)
后面我试了下,直接把文件复制进/Users/计算机名/myweb/uploads,以及在这里删除,是可以的。
然而我通过连接服务器进入http://127.0.0.1/uploads,复制文件到这个路径下,奇(gou)迹(shi)发生了,复制不进去,提示“finder不能完成该操作 因为未能读取或写入"文件名"中的某些数据(错误代码-36)”。
我猜问题就在这里了,因为视频教程里演示过拖一个图片文件进去,没有任何问题。枸驲的苹果公司,天天叫这也没权限那也没权限?我在http://127.0.0.1/uploads下显示uploads的简介,看到只有系统权限读和写以及everyone没有任何权限。这个简单,我改!嗯?又没有权限?我到底买了个macbook还是买了个爹?
一个下午就在百度、拖文件、该权限失败中度过。头发抓掉了大把。
临近下班,实在没辙了,把macbook带回去看看。
回家也没心思继续搜博客,直接利用家里的网给macbook升级好了,公司的无线网不给连外网,已经有段时间没更新系统了。
3、升级到mac OS 11.01
我macbook原来的系统版本是10.16还是1几忘了,叫什么Catalina,升级了叫Big Sur。升级前怕苹果搞我备份了自己的xcode代码。
升级了之后xcode,代码没事。apache配置时改过的httpd.conf、httpd-dav.conf全都给我改回去了,mmp。又花了将近半小时修改。好在myweb文件夹下的uploads文件夹、admin密码文件也没事。
ok,试试http://127.0.0.1/uploads吧,如果再不成就回去学php写脚本用POST请求,说不定写个简单的脚本还要不了一天半,关键是被折腾死了。
结果,今天居然可以把文件拖进http://127.0.0.1/uploads了!
再测试代码,上传还是失败,只不过不报internal server error,报的是"Code=-1016 "Request failed: unacceptable content-type: text/html"。随便找了个博客:
iOS开发使用AFN请求服务器数据,报错误码-1016的解决办法(图解)_moses的博客-CSDN博客blog.csdn.net![dd3c3edb94f2ad9ccc465ba9120c67c3.png](https://i-blog.csdnimg.cn/blog_migrate/02640436052edbfa6ca913c9655a0035.jpeg)
轻松搞定,再测试,上传成功!
成功了!
成了!
了!
然而一切只是个开始,接下来还要在windows笔记本上配置一遍webdav再测试跨设备联机效果,天哪!