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

//开始因为要实现跨平台,考虑过用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 );
}	


 

                
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值