www的基本用法(二)

来源:互联网 发布:想兼职淘宝客服 编辑:程序博客网 时间:2024/06/06 08:38


         上篇文章,讲述了www的最常规用法。在使用http协议的时候,默认请求是Get请求。 而服务器接受请求,有两种常用方式:post请求和get请求。下面讲一下http协议中的两种请求。

   1、Get请求

     一般说来,www默认是Get请求,如果带上表单就变成了post请求。关于post请求和get请求可以自行搜索文章,这里只是介绍在客户端与服务器交互的时候,客户端该怎么办。


   既然默认请求是get请求,那么直接输入网址就可以了,比如:

 

 public IEnumerator getData(string url)    {        WWW www = new WWW(url);        yield return www;    }
 这种直接输入网址的方式就是Get请求,当然有的时候Form表单也有可能是Get请求。那就看具体需求了。



 2、post请求

post请求一般会包含表单或者字典这种键值对存在的形式。在上传文件,发送个人数据时候都会用到。

先说form表单:


 public IEnumerator getData(string url)    {        WWWForm form = new WWWForm();        form.AddField();//这里面就是键值对,具体就看服务器是需要什么数据了        byte[] bytes = new byte[0];        form.AddBinaryData("post", bytes);//这里就是post请求,发送数据是发送字节流,将所要发送的信息转成字节流就行        WWW www = new WWW(url,form);        yield return www;    }


表单中会有很多表,存在形式都为键值对,发送信息是以字节流的形式,所以文件还是数据都先要转换成字节流的形式。


 关于form表单,假如用来上传文件的话,举个例子(上传图片为例子):

 首先我们需要读取到本地文件,转成字节流,然后上传的时候说明文件格式就行了。

  public IEnumerator getData(string url)    {        string path = Application.streamingAssetsPath+"/test.jpg";//图片的路径        WWW readFile = new WWW("file://"+path);        yield return readFile;        byte[] bytes = readFile.bytes;        WWWForm form = new WWWForm();        form.AddField();                form.AddBinaryData("file", bytes,"这里是图片名称","image/jpg");//假设图片是jpg的图片        WWW www = new WWW(url,form);        yield return www;    }

第四个参数是说明文件格式。 通过表单上传文件,是post请求的延伸。


其次使用字典或者哈希表或者list集合请求:

        SortedList<string, string> list = new SortedList<string, string>();        list.Add("username", "用户名");        list.Add("password", "密码");        var jsonData = JsonMapper.ToJson(list); //将我们的数据转换成json                     Dictionary<string, string> headers = new Dictionary<string, string>();        headers.Add("Content-Type", "application/json"); //告知服务器的数据类型                byte[] body = Encoding.UTF8.GetBytes(jsonData);        WWW www = new WWW(url, body, headers);        yield return www;


这样也能完成post请求,不过在后来的版本 出现了一个UnityWebRequest,可以直接发送post请求:

 public IEnumerator getData(string url)    {        UnityEngine.Networking.UnityWebRequest request = new UnityWebRequest(url);        yield return request.Send(); //如果没有request.Send() 请求是不会开始的    }

在后面的版本中,官方介绍UnityWebRequest,只是说明测试,并没有说废除www。




关于www的具体用法,大致就是这些。如果想一起探讨技术,可以添加扣扣群:478462732。


不过首先声明:我是菜鸟。