开发者社区> 技术小美> 正文

[unity3d]unity跟.net进行http通信

简介:
+关注继续查看

谈谈今天的学习感受,今天收获最大的就是解决了u3d向.net提交表单,然后.net服务器将接受过来的表单数据保存到sqlserver数据库中。unity3d中wwwform默认的是post提交的。

http 提交数据原理 

http 协议通过 url来获取和提交数据 。提交数据的方式 有两种,一种是get方法,一种是post方法。get一般用于告诉服务器把满足参数的数据发送给回来。

例如:get 的html代码如下:

[html] view plaincopy
  1. <form action="search.php" method ="GET">  
  2.     <username:<inputtypeinputtype="text"name="user"/><br>  
  3.     <password:<inputtypeinputtype="password "name="pwd"/><br>  
  4.      <input type="submit"value="login"/>  
  5. </form >  

post一般是将数据发送给服务器,服务器将这些数据进行处理,比如说存储到数据库。

例如:post的html 代码如下:

[html] view plaincopy
  1. <form action="login.php" method ="POST" >  
  2.     <username:<inputtypeinputtype="text"name="user"/><br>  
  3.     <password:<inputtypeinputtype="password "name="pwd"/><br>  
  4.      <input type="submit"value="login"/>  
  5. </form >  

     其实区别就是提交的方式不一样,点击login按钮后,浏览器地址栏里分别显示如下:

       get方法url为:http://127.0.0.1/serach.php?user=hortor&pwd=123

       post方法url为:http://127.0.0.1

客户端发送表代码:

using UnityEngine; using System.Collections;  public class test : MonoBehaviour {  	private string url = "http://192.168.1.7/plusFile/Handler.ashx"; 	private string urlname; 	void Start () { 		urlname = "丁小未"; 		 	} 	 	void OnGUI() 	{ 		GUILayout.Label("姓名:"); 		urlname = GUILayout.TextField(urlname); 		if(GUILayout.Button("确认提交")) 		{ 			StartCoroutine(myUpdate());	 		} 	} 	 	IEnumerator myUpdate() 	{ 		WWWForm form = new WWWForm(); 		form.AddField("url",urlname); 		WWW w = new WWW(url,form); 		yield return w; 		print(w.data); 		if(w.error!=null) 		{ 			print("错误:"+w.error); 		} 		else 		{ 			print("OK"); 			print(w.text); //服务器端返回的数据 			print("长度:"+w.text.Length.ToString()); 		} 	} } 

效果图:



服务器端接受代码:

<%@ WebHandler Language="C#" Class="Handler" %>  using System; using System.Collections.Generic; using System.Linq; using System.Web; using System.Web.UI; using System.Web.UI.WebControls; using System.Data.SqlClient; using System.Data;  public class Handler : IHttpHandler {          public void ProcessRequest (HttpContext context) {         context.Response.ContentType = "text/plain";                  string name = context.Request.Form["url"];         //string name = context.Request.QueryString["url"];         if (name != null)         {             context.Response.Write("我接收到了:"+name);             //context.Response.Write("<font color= 'red'>hello</font>");             Test1 t = new Test1();             t.conn(name);            }         else         {             context.Response.Write("error");         }     }       public bool IsReusable {         get {             return false;         }     }  }   public class Test1 {     SqlConnection dbConnection;     private string sqlInsert;     //private string name;      public Test1()     {              }      public void conn(string name)     {         if (name != null)         {             sqlInsert = "INSERT INTO source(url) VALUES(" + "'"+name+"'" + ")";             openSqlConnection();//打开数据库             doQuery(sqlInsert);         }     }      public void openSqlConnection()     {         dbConnection = new SqlConnection("server=.;database=Student;user id=sa;password=123456");         dbConnection.Open();     }      public void closeSqlConnection()     {         dbConnection.Close();         dbConnection = null;     }      public void doQuery(string strCommand)     {         SqlCommand dbCommand = dbConnection.CreateCommand();         dbCommand.CommandText = strCommand;         int i = dbCommand.ExecuteNonQuery();         dbCommand.Dispose();         dbCommand = null;         if (i > 0)         {             //Response.Write("插入成功");         }     } }

服务器端效果图:




==================== 迂者 丁小未 CSDN博客专栏=================

MyBlog:http://blog.csdn.net/dingxiaowei2013             MyQQ:1213250243

Unity QQ群:858550         cocos2dx QQ群:280818155

====================== 相互学习,共同进步 ===================

 

转载请注明出处:http://blog.csdn.net/dingxiaowei2013/article/details/17099057

欢迎关注我的微博:http://weibo.com/u/2590571922

需要工程文件的请留言!














本文转蓬莱仙羽51CTO博客,原文链接:http://blog.51cto.com/dingxiaowei/1366199,如需转载请自行联系原作者

版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

相关文章
【.NET6+WPF】WPF使用prism框架+Unity IOC容器实现MVVM双向绑定和依赖注入
前言:在C/S架构上,WPF无疑已经是“桌面一霸”了。在.NET生态环境中,很多小伙伴还在使用Winform开发C/S架构的桌面应用。但是WPF也有很多年的历史了,并且基于MVVM的开发模式,受到了很多开发者的喜爱。
165 0
【.NET+MQTT】.NET6 环境下实现MQTT通信,以及服务端、客户端的双边消息订阅与发布的代码演示
MQTT广泛应用于工业物联网、智能家居、各类智能制造或各类自动化场景等。MQTT是一个基于客户端-服务器的消息发布/订阅传输协议,在很多受限的环境下,比如说机器与机器通信、机器与物联网通信等。好了,科普的废话不多说,下面直接通过.NET环境来实现一套MQTT通信demo,实现服务端与客户端的双边消息发布与订阅的功能和演示。
250 0
【.NET6+Modbus】Modbus TCP协议解析、仿真环境以及基于.NET实现基础通信
随着工业化的发展,目前越来越多的开发,从互联网走向传统行业。其中,工业领域也是其中之一,包括各大厂也都在陆陆续续加入工业4.0的进程当中。
108 0
Unity 引擎开始从 Mono 迁移到 .NET CoreCLR
Unity 引擎开始从 Mono 迁移到 .NET CoreCLR
162 0
『SignalR』.NET使用 SignalR 进行实时通信初体验
📣读完这篇文章里你能收获到 - 你将对SignalR有了初步的认识及体会 - 对于哪些场景适用SignalR以及如何接入使用 - SignalR的代码入门级Demo实际案例
177 0
钉钉消息机器人.Net通用C#Unity实现钉钉消息通知一个工具类(无需SDK,无其他引用)
钉钉消息机器人.Net通用C#Unity实现钉钉消息通知一个工具类(无需SDK,无其他引用) Chinar —— 心分享、心创新! 助力快速完成 .Net 通用的钉钉Post机器人消息通知 为初学者节省宝贵的时间,避免采坑! 官方文档详细,但实现方式上没有过多的说明。 本质上就是一个 POST 消息请求 所以我们只要, 完成正常发送POST 使得钉钉方从中可获取对应格式的数据 即可!
790 0
.Net Micro Framework研究—TCP/IP通信
关于网络通信方面,Digi提供了两个程序,一个是TCP Server运行在Digi的开发板上,一个是TCP Client程序,运行在PC上,通过网络,上位机很容易控制Digi开发的IO信号
519 0
+关注
技术小美
文章
问答
视频
文章排行榜
最热
最新
相关电子书
更多
CDN助力企业网站进入HTTPS时代
立即下载
低代码开发师(初级)实战教程
立即下载
阿里巴巴DevOps 最佳实践手册
立即下载