您的位置:首页 > 理论基础 > 计算机网络

Unity3D 集成 Face++ FacePlusPlus httpClient http协议 byte数组转string

2016-03-09 20:47 585 查看
//開始由于要实现跨平台。考虑过用curl封装c++的dll(android *.so)的方式,在c#Dllimport实现
//后来发现Unity3D本身支持http协议。且face++的api都是http訪问返回json串的。
//在看过face++ phpsdk c#sdk androidsdk之后突发奇想,想到例如以下方法
//Unity3d 集成 Face++的好方法

public float fWaitProgress = 0;
public string strResult = "";

//POST请求(多个參数)
public IEnumerator POST(string url, Dictionary<string, string> post)
{
//表单
WWWForm form = new WWWForm();

form.AddField("api_key", FACE_KEY);
form.AddField("api_secret", FACE_SECRET);

//从集合中取出全部參数。设置表单參数(AddField()).
foreach (KeyValuePair<string, string> post_arg in post)
{
form.AddField(post_arg.Key, post_arg.Value);
}
//表单传值,就是post
WWW www = new WWW(url, form);

yield return www;
fWaitProgress = www.progress;

if (www.error != null)
{
//POST请求失败
strResult =  "error :" + www.error;
}
else
{
//POST请求成功
strResult = www.text;
}
}
//POST请求(单个參数)
public IEnumerator POST(string url, string key, string value)
{
//表单
WWWForm form = new WWWForm();

form.AddField("api_key", FACE_KEY);
form.AddField("api_secret", FACE_SECRET);
form.AddField(key, value);
//表单传值,就是post
WWW www = new WWW(url, form);

yield return www;
fWaitProgress = www.progress;

if (www.error != null)
{
//POST请求失败
strResult =  "error :" + www.error;
}
else
{
//POST请求成功
strResult = www.text;
}
}
//POST请求(二进制參数)
public IEnumerator POST(string url, string key, byte [] bytes,string name,string type)
{
//表单
WWWForm form = new WWWForm();

form.AddField("api_key", FACE_KEY);
form.AddField("api_secret", FACE_SECRET);
form.AddBinaryData(key, bytes, name, type);
//表单传值。就是post
WWW www = new WWW(url, form);

yield return www;
fWaitProgress = www.progress;

if (www.error != null)
{
//POST请求失败
strResult =  "error :" + www.error;
}
else
{
//POST请求成功
strResult = www.text;
}
}

//使用方法
if (GUI.Button(new Rect(10, 130, 100, 60), "post"))
{
//byte[] pngData = texture2D.EncodeToPNG();
//StartCoroutine(POST(URL_DETECT ,"img",pngData,"test.png","image/png"));

Dictionary<string, string> dic = new Dictionary<string, string>();
dic.Add("url","http://aaaa.com/a.jpg");
//dic.Add("img","c:\\a.jpg");
StartCoroutine(POST(URL_DETECT ,dic));

//StartCoroutine(POST(URL_DETECT ,"img","c:\\a.jpg"));

//unity byte数组转string
//byte[] pngData = texture2D.EncodeToPNG();
//string strData = System.Text.Encoding.Default.GetString(pngData,0,pngData.Length );
}




                                            
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: