谈谈今天的学习感受,今天收获最大的就是解决了u3d向.net提交表单,然后.net服务器将接受过来的表单数据保存到sqlserver数据库中。unity3d中wwwform默认的是post提交的。
http 提交数据原理
http 协议通过 url来获取和提交数据 。提交数据的方式 有两种,一种是get方法,一种是post方法。get一般用于告诉服务器把满足参数的数据发送给回来。
例如:get 的html代码如下:
- <form action="search.php" method ="GET">
- <username:<inputtypeinputtype="text"name="user"/><br>
- <password:<inputtypeinputtype="password "name="pwd"/><br>
- <input type="submit"value="login"/>
- </form >
post一般是将数据发送给服务器,服务器将这些数据进行处理,比如说存储到数据库。
例如:post的html 代码如下:
- <form action="login.php" method ="POST" >
- <username:<inputtypeinputtype="text"name="user"/><br>
- <password:<inputtypeinputtype="password "name="pwd"/><br>
- <input type="submit"value="login"/>
- </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("插入成功");
- }
- }
- }
服务器端效果图:
技术讨论群:858550 欢迎前来讨论技术问题。
来源:oschina
链接:https://my.oschina.net/u/1015899/blog/181252