关闭

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

标签: unity跟asp.net通信
4998人阅读 评论(4) 收藏 举报
分类:

谈谈今天的学习感受,今天收获最大的就是解决了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

需要工程文件的请留言!

6
1
查看评论
发表评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场

Unity3d之Http通讯GET方法和POST方法

(一)GET方法 IEnumerator SendGet(string _url) { WWW getData = new WWW(_url); yi...
  • dingkun520wy
  • dingkun520wy
  • 2015-10-18 20:59
  • 14484

[网络]Unity中Http访问和下载

在unity中使用http访问和下载
  • carefreeq
  • carefreeq
  • 2017-05-22 12:28
  • 1338

[网络开发教程] ASP.net+Unity3D完美实现数据库操作方法(已测通

很多同学用到这样方法导出时无法实现操作数据库,由于U3D对dll支持并不是很完美,这里给出一个交给web端来处理的详细教程可以解决各个平台操作mssql的问题。php、mysql等同理 接下来我们通...
  • mysouling
  • mysouling
  • 2016-02-24 10:50
  • 1743

unity3D中使用Socket进行数据通信(三)

今天跟大家继续学习下socket,由于最近有个招标参数需要给之前的一款产品做教师端以及后台数据库部分,忙了将近两个礼拜,今天刚发布了,就继续我们的socket通信部分。          之前服务端一...
  • lj34207310
  • lj34207310
  • 2016-03-11 18:23
  • 10325

untiy3d 5x,network的服务器端和客户端通信

unity3d 5x以前,可以用NetworkView.RPC的方式进行通信。5x,之后,虽然还可以用networkview建立服务器和客户端,但是NetworkView.RPC的通信方式被取消了。 ...
  • wuyt2008
  • wuyt2008
  • 2016-04-29 15:04
  • 5190

UNITY之使用Socket与java服务器通信

---------------------------客户端---------------------------------------- [csharp] view plai...
  • sinat_35551809
  • sinat_35551809
  • 2016-09-08 19:18
  • 1679

Unity3d使用Socket与java服务器通信

using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.N...
  • AngelMyMei
  • AngelMyMei
  • 2014-11-03 16:35
  • 11611

Unity3d http 通信

前言 Unity3d 是一个跨平台的引擎,在移动互联网浪潮之中,尤其是移动游戏3d方向上,Unity3d 毫无疑问是最耀眼的明星。Unity3d的http通信很简单,也非常好用,下面通过http和p...
  • hackmind
  • hackmind
  • 2012-08-24 18:04
  • 8113

Unity3D 游戏引擎之C#使用Socket与HTTP连接服务器传输数据包

最近比较忙,有段时间没写博客拉。最近项目中需要使用HTTP与Socket,雨松MOMO把自己这段时间学习的资料整理一下。有关Socket与HTTP的基础知识MOMO就不赘述拉,不懂得朋友自己谷歌吧。我...
  • jbjwpzyl3611421
  • jbjwpzyl3611421
  • 2013-10-13 11:08
  • 12572

Unity3D开发之Http协议网络通信

之前Unity3D项目要做跟服务器通信的模块,然后服务器那边的协议是基于http的J'so
  • lihandsome
  • lihandsome
  • 2014-07-10 12:02
  • 3359
    个人资料
    • 访问:1775974次
    • 积分:22459
    • 等级:
    • 排名:第375名
    • 原创:416篇
    • 转载:215篇
    • 译文:3篇
    • 评论:430条
    关于我
    我叫小未,网名Aladdin,主做U3D游戏程序,不甘于平庸,喜欢尝试,喜欢研究计算机技术,13年9月份开始工作,曾两年就职于巨人网络做游戏客户端程序,闲暇时间做过麦子学院在线讲师,做过独立开发,做过C#游戏服务器和.NET Web服务器,做过IOS原生开发,爱游戏,爱coding!

    邮件:1213250243@qq.com
    QQ交流
    Git仓库
    新浪围脖
    博客专栏
    最新评论