unity post 请求使用post传参方式打开网址

2012年7月 Java大版内专家分月排行榜第三2011年11月 Java大版内专家分月排行榜第三2007年12月 Java大版内专家分月排行榜第三2007年10月 Java大版内专家分月排行榜第三
本帖子已过去太久远了,不再提供回复功能。Unity(2)
1.Http协议中常用接口有GET和POST。
2.GET接口传输的数据量比较小,一般用于短字节的字符串传递。
3.POST接口能够传输的数据量较大,一般用于图片、音频等传递。
4.在Unity中,有两种方式实现对接口的调用,即传统C#的流(Stream)调用和Unity提供的WWW调用。
4.1Unity提供的WWW调用示例:
//上传数据,WWW类中直接提供了相应的函数
//http://127.0.0.1/add_project为后台提供的Post接口
byte[] byteArray = System.Text.Encoding.UTF8.GetBytes(&Post Success.&);
WWW m_www = new WWW(&http://127.0.0.1/add_project&, byteArray);
//获取数据,使用WWWForm类
//WWWForm.data值为byte[]类型
WWWForm form = new WWWForm();
WWW m_www_2 = new (&http://127.0.0.1/add_project&,form);
Debug.log(&WWWFormData:&+form.data);
4.2用C#传统流(Stream)方法调用
string url = &http://192.168.1.6/add_project&;
postData = &Test Success.&;
WebRequest wRequest = WebRequest.Create(url);//需要System.Net命名空间
wRequest.ContentLength = postData.L
wRequest.Method = &POST&;//注意大小写
wRequest.ContentType = &application/octet-stream&;//类型很多
//Post上传数据给URL
StreamWriter sw = new StreamWrite(wRequest.GetRequestStream());
sw.Write(postData);
sw.Flush();
sw.Close();
sw.Dispose();
//获取值,问题多多,测试不成功,谨慎使用
WebResponse wResponse = wRequest.GetResponse();
Stream stream = wResponse.GetResponseStream();
StreamReader reader = new StreamReader(stream, System.Text.Encoding.Default);
string str = reader.ReadToEnd();
//url返回的值
&&相关文章推荐
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
访问:2379次
排名:千里之外
(1)(2)(1)(4)
(window.slotbydup = window.slotbydup || []).push({
id: '4740887',
container: s,
size: '250,250',
display: 'inlay-fix'10745人阅读
Unity3D(31)
(一)GET方法
IEnumerator SendGet(string _url)
WWW getData = new WWW(_url);
yield return getD
if(getData.error != null)
Debug.Log(getData.error);
Debug.Log(getData.text);
(二)POST方法
IEnumerator SendPost(string _url, WWWForm _wForm)
WWW postData = new WWW(_url, _wForm);
yield return postD
if (postData.error != null)
Debug.Log(postData.error);
Debug.Log(postData.text);
调用两个方法
public void TestHttpSend()
//测试GET方法
StartCoroutine(SendGet(&http://kun./?int=5&));
//测试POST方法
WWWForm form = new WWWForm();
form.AddField(&int&, &6&);
StartCoroutine(SendPost(&http://kun./&, form));
&&相关文章推荐
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
访问:361435次
积分:4136
积分:4136
排名:第7798名
原创:48篇
转载:44篇
评论:54条
阅读:66896
阅读:27052
文章:28篇
阅读:136750
(2)(6)(2)(4)(9)(4)(4)(7)(15)(8)(2)(3)(2)(1)(2)(1)(2)(2)(1)(1)(5)(1)(8)
(window.slotbydup = window.slotbydup || []).push({
id: '4740881',
container: s,
size: '200,200',
display: 'inlay-fix'页面间传值的方式(表单post传值)
从一个页面转向另一个页面的请求方式有两种,Post和Get.
如果从原理上来探究他们的区别,涉及到Http传输协议的细节,这样深究下去,就成华为人干的事了,有空可以请教一下华为高人,我一个做企业软件的实在没那么多时间也没必要去研究那些东西,所以就看一下表象吧。
所有的人都知道如下区别:
1.Post传输数据时,不需要在URL中显示出来,而Get方法要在URL中显示。
2.Post传输的数据量大,可以达到2M,而Get方法由于受到URL长度的限制,只能传递大约1024字节.
3.Post顾名思义,就是为了将数据传送到服务器段,Get就是为了从服务器段取得数据.而Get之所以也能传送数据,只是用来设计告诉服务器,你到底需要什么样的数据.Post的信息作为http请求的内容,而Get是在Http头部传输的。
我们的form表单的method方法,有两个,post,get.它在页面传值的时候的区别也就是上面提到的三点.
先来看一下post方法.
这个方法在asp时代应该跟程序员打交道很多的,因为那时候没有现在的ViewState,每个页面要恢复原来的状态,都要将页面Post给自身,然后挨个取值,重新赋值.现在这些琐碎的事情都让ViewState代劳了.所以将页面post给自身的动作,在某种程度上已经被Asp.net的程序员们忘却了,所以Post也就被大部分的忽视了,这就是技术进步的双刃剑,带来方便的同时,蒙上你的眼睛。
ViewState必须包含在
的窗体下,而只要包含了"runat="server""的标志,就甭想Post到其他页面中去,为什么?老盖说,我的ViewState是保存当前页面状态的,你要转到其他页面,他说,不行,**不认识的参数.如果想Post一个窗体,咋办?有四种方式可供选择.
1.在页面上新建一个form,不要加上runat="server"的标志,当然在这个窗体下的控件也就不用想用Viewstate来传值了.当在其他有runat="server"的窗体的中的按钮事件中,手动调用新建form的submit()
传送页面代码如下:
&!--html代码
&form id="Form1" method="post"
runat="server"&
&&&&&&&&&&&
&input id="btnTransfer"
type="button"& onclick="post();"
runat="server"&
&&&&&&&&&&&
&input type="text" runat="server"
id="SourceData"&
&form id="forPost"
method="post"&
&&&&&&&&&&&
&input type="text" runat="server"
id="SourceData2"&
&!--Script代码
&script language="javascript"&
&&&&&&&&&&&
function post()
&&&&&&&&&&&
&&&&&&&&&&&&&&&
forPost.action="DestinationPage.aspx";
&&&&&&&&&&&&&&&
forPost.submit();
&&&&&&&&&&&
--&&&&&&&&
string a=Request.Form["SourceData2"].ToString();
2.通过Session取值,在一个页面中赋值,在其他页面中共享,这个方式也被广泛应用,个人不倾向于用这种方式,我怕造成Session值的混乱无序,Session用来存一些公共的东西已经累得够呛了。
3.通过Context传值,在传送页面之前,将需要传递到其他页面的值存在Context中。示例代码如下:
//点击某个button时触发
private void btnTransfer_ServerClick(object sender, EventArgs
&&&&&&&&&&&
Context.Items["SourceData"]=SourceData.V
&&&&&&&&&&&
Server.Transfer("DestinationPage.aspx");
string a=Context.Items["SourceData"].ToString();
4.通过Server.Transfer的方式。
这个方式在方法三种已经用到了,不过可以在调用页面为要传递到被调用页面的值创建属性(当然可以直接将它设成public),这样就可以在其他页面访问了。
//要传送的值
System.Web.UI.HtmlControls.HtmlInputText SourceD
public string getSourceData
&&& return
SourceData.V
//传送页面
Server.Transfer("DestinationPage.aspx");
private SourceClass sourceP
sourcePage=(SourceClass)Context.H
&&&&&&&&&&&
string aa=sourcePage.getSourceD
以上就是Post的在不同页面传递数据的方式了。
下面是get方法
我常用的是& 传送页面
string aa=SourceData.V
&&&&&&&&&&&
string bb=SourceData.V
&&&&&&&&&&&
url="DestinationPage.aspx?parameter1="+aa+"&parameter2="+
&&&&&&&&&&&
Response.Redirect(url,false);
string aa=Request.QueryString["parameter1"].ToString();
&&&&&&&&&&&
string bb=Request.QueryString["parameter2"].ToString();
Response.Redirect(url,false)里的false都是Response.End()这个方法惹的祸,老盖说,写成false就好了,因为默认是true。我都转向其他页面了,还不让我终止原来页面的响应
已投稿到:
以上网友发言只代表其个人观点,不代表新浪网的观点或立场。import java.io.IOE
import java.net.URLE
import mons.httpclient.HttpC
import mons.httpclient.HttpM
import mons.httpclient.NameValueP
import mons.httpclient.methods.GetM
import mons.httpclient.methods.PostM
public class HttpClientTest {
public static void main(String[] args) throws Exception{
String url = "/webservices/DomesticAirline.asmx/getDomesticAirlinesTime";
String host = ".cn";
String param = "startCity="+URLEncoder.encode("杭州", "utf-8")+"&lastCity=&theDate=&userID=";
HttpClient httpClient = new HttpClient();
httpClient.getHostConfiguration().setHost(host, 80, "http");
HttpMethod method = getMethod(url, param);
//HttpMethod method = postMethod(url);
httpClient.executeMethod(method);
String response = method.getResponseBodyAsString();
//String response = new String(method.getResponseBodyAsString().getBytes("ISO-8859-1"));
System.out.println(response);
private static HttpMethod getMethod(String url,String param) throws IOException{
GetMethod get = new GetMethod(url+"?"+param);
get.releaseConnection();
private static HttpMethod postMethod(String url) throws IOException{
PostMethod post = new PostMethod(url);
post.setRequestHeader("Content-Type","application/x-www-form-charset=gbk");
NameValuePair[] param = { new NameValuePair("startCity","杭州"),
new NameValuePair("lastCity","沈阳"),
new NameValuePair("userID",""),
new NameValuePair("theDate","") } ;
post.setRequestBody(param);
post.releaseConnection();
& 如果PostMethod提交的是中文字符,需要加上相应的编码格式:& post.setRequestHeader("Content-Type","application/x-www-form-charset=gbk");&&如果GetMethod提交的参数有中文字符,需要先转换成utf-8格式:& URLEncoder.encode("杭州", "utf-8");
Views(...) Comments()

我要回帖

更多关于 post 传参方式 的文章

 

随机推荐