在一般的U3D网络开发中,直接使用WWW类便足够正常使用,但我在发现使用WWW下载大文件时,会导致整个程序卡顿的情况(不清楚是否我个人电脑问题),所以干脆使用HttpWebRequest/HttpWebResponse + await/async 来代替WWW

U3D中还是在使用比较低的Mono版本,所以是不支持(await/async)的。准确来说是不支持Task<T>,而且还有些BUG(我自个能确定的就有两个),现在最希望就是U3D更新Mono版本,写代码就可以更爽了!

无奈之下,只有参照AsyncEnumerator和U3D本身的Coroutine来实现一个自用的Coroutine库,在PC中测试了,发现有时候异步读取时可能会发生没有(回)调用AsyncCallback,当时电脑确实出了点问题,重启之后此事再无发生。

随之Build成安卓版放到手机里测试下......崩了!此时,我第一步想到的是U3D在安卓下是否HttpWebRequest等?因为按道理说如果Build成功的话应该是支持的,所以新建了一个干净的项目,只包含Http相关的。

再放进去:WebException!输出信息是一堆英文,鉴于本人英语水平有限并信息无法复制,所以立即放弃了上网找原因的想法。我猜想的是应用没有访问网络的权限(安装时我没细看)。

因此,再添加一个测试原生WWW的脚本:(以证明不是我代码问题(逃)

public class DownloadWWW : MonoBehaviour {

    // Use this for initialization
void Start () {
StartCoroutine(Download());
} IEnumerator Download()
{
WWW www = new WWW("http://cn.bing.com");
yield return www;
foreach (var h in www.responseHeaders)
t += h.Key + " " + h.Value + "\n";
t += www.text;
}
string t;
int c;
void OnGUI()
{
GUILayout.Button(c++ + " ! " + t);
}
}

继续Build放到手机,这次安装我可慢慢看清楚了:应用需要新权限——网络访问。果真如此,在加了WWW之后连原先的代码都能正常运行了。

猜想,是的,我不是合格的程序员,我不想去验证:

只有在U3D编译代码时发现脚本有使用WWW 或 Networkxxx 等类时,才增加应用访问权限,否则即使只使用HttpWebRequest 或Socket也无法访问网络。
当然也可以自行在Android中增加网络权限。

最后:此文标题虽写吐槽,而我本想正正经经地写好文章,但发现写作水平以下降的小学水平,当且作为流水账看罢。

Unity3d Android Http 开发中的坑(吐槽的更多相关文章

  1. Unity3D Android手机开发环境配置

    Unity3D Android手机开发环境配置 Date:2014-01-01 07:09 1.配置eclipse环境:首先在官网下载安装包:http://developer.android.com/ ...

  2. Android应用开发中关于this.context=context的理解

    在Android应用开发中,有的类里面需要声明一个Context的成员变量,然后还需要在该类的构造函数中加上this.context=context;这行代码.为什么要这么写呢?不写不行么? 先看下面 ...

  3. Android学习开发中如何保持API的兼容

    Android学习开发中如何保持API的兼容: 1,采用良好的设计思路 在设计过程中,如果能按照下面的方式来进行设计,会让这个API生命更长久 面向用例的设计,收集用户建议,把自己模拟成用户,保证AP ...

  4. Android应用开发中三种常见的图片压缩方法

    Android应用开发中三种常见的图片压缩方法,分别是:质量压缩法.比例压缩法(根据路径获取图片并压缩)和比例压缩法(根据Bitmap图片压缩). 一.质量压缩法 private Bitmap com ...

  5. Android TV开发中所有的遥控器按键监听及注意事项,新增home键监听

    原文:Android TV开发中所有的遥控器按键监听及注意事项,新增home键监听 简单记录下android 盒子开发遥控器的监听 ,希望能帮到新入门的朋友们 不多说,直接贴代码 public cla ...

  6. 【Android】开发中个人遇到和使用过的值得分享的资源合集

    Android-Classical-OpenSource Android开发中 个人遇到和使用过的值得分享的资源合集 Trinea的OpenProject 强烈推荐的Android 开源项目分类汇总, ...

  7. 浅谈Android系统开发中LOG的使用

    文章转载至CSDN社区罗升阳的安卓之旅,原文地址:http://blog.csdn.net/luoshengyang/article/details/6581828 在程序开发过程中,LOG是广泛使用 ...

  8. 浅析Android Camera开发中的三个尺寸和三种变形 (贡献一个自适配Picturesize和Previewsize的工具类)

    转至 (http://blog.csdn.net/yanzi1225627/article/details/17652643) 经常听人问Camera开发中,各种变形问题,今天有空就在此梳理总结下. ...

  9. Android应用开发中的夜间模式实现(一)

    前言 在应用开发中会经常遇到要求实现夜间模式或者主题切换具体例子如下,我会先讲解第一种方法. 夜间模式 知乎 网易新闻 沪江开心词场 Pocket 主题切换 腾讯QQ 新浪微博 我今天主要是详述第一种 ...

随机推荐

  1. python---进程、线程

    一.进程 二.线程 1,使用Thread类创建线程 #!/usr/bin/env python # -*- coding:utf-8 -*- __author__ = 'zhoufeng' impor ...

  2. C# winform 动态调用WebService

    封装的通用方法: using System; using System.Collections.Generic; using System.Text; using System.Xml; using ...

  3. jquery仿淘宝规格颜色选择效果

    jquery实现的仿淘宝规格颜色选择效果源代码如下 jquery仿淘宝规格颜色选择效果 -收缩HTML代码 运行代码 [如果运行无效果,请自行将源代码保存为html文件运行] <script t ...

  4. 在 .NET 4.0 中使用 .NET 4.5 中新增的特性(CallerMemberNameAttribute/CallerFilePathAttribute/CallerLineNumberAttribute)

    介绍 标题中所说的三个特性 CallerMemberNameAttribute / CallerFilePathAttribute / CallerLineNumberAttribute 我们统称为调 ...

  5. 高仿淘宝和聚美优品商城详情页实现《IT蓝豹》

    高仿淘宝和聚美优品商城详情页实现 android-vertical-slide-view高仿淘宝和聚美优品商城详情页实现,在商品详情页,向上拖动时,可以加载下一页. 使用ViewDragHelper, ...

  6. python install_opener用法

    opener:当你获取一个URL时,你使用一个opener(OpenerDirector).正常情况下我们一直使用默认的opener,通过urlopen,但你也可以创建自定义的openers. url ...

  7. sftp上传 - 待完

    1.搭建本地sftp 1.1.下载msftpsrvr.exe软件 下载地址:http://www.download3k.com/Install-Core-FTP-Mini-SFTP-Server.ht ...

  8. chapter1 渗透测试与metasploit

    网络对抗技术课程学习 chapter1 渗透测试与metasploit 一.读书笔记 二.渗透测试 通过模拟恶意攻击者的技术与方法进行攻击,挫败目标系统安全控制措施,取得访问控制权,并发现具备业务影响 ...

  9. VisualSVN Server导入Repository

    SVN服务器换机器了,原来SVN服务器A的Repository需要原样复制到新的SVN服务器B. 原样复制 Repository ,是为了保持SVN内容不会因换了服务器而导致不同. 那么在新SVN服务 ...

  10. maven配置之setting配置

    <!--声明语句--> <?xml version="1.0" encoding="UTF-8"?> <settings xmln ...