zoukankan      html  css  js  c++  java
  • Unity WWW类调用http

    1、Http请求中Content-Type讲解

      MediaType,即是Internet Media Type,互联网媒体类型;也叫做MIME类型,在Http协议消息头中,使用Content-Type来表示具体请求中的媒体类型信息。

     类型格式:type/subtype(;parameter)? type
     主类型,任意的字符串,如text,如果是*号代表所有; 
     subtype 子类型,任意的字符串,如html,如果是*号代表所有; 
     parameter 可选,一些参数,如Accept请求头的q参数, Content-Type的 charset参数。 
     例如: Content-Type: text/html;charset:utf-8;
     常见的媒体格式类型如下:

    text/html : HTML格式
    text/plain :纯文本格式      
    text/xml :  XML格式
    image/gif :gif图片格式    
    image/jpeg :jpg图片格式 
    image/png:png图片格式
    
    application/xhtml+xml :XHTML格式
    application/xml     : XML数据格式
    application/atom+xml  :Atom XML聚合格式    
    application/json    : JSON数据格式
    application/pdf       :pdf格式  
    application/msword  : Word文档格式
    application/octet-stream : 二进制流数据(如常见的文件下载)
    application/x-www-form-urlencoded : <form encType=””>中默认的encType,form表单数据被编码为key/value格式发送到服务器(表单默认的提交数据的格式)
    
    multipart/form-data : 需要在表单中进行文件上传时,就需要使用该格式
    

      

    2、示例代码

    using System;
    using System.Collections;
    using System.Collections.Generic;
    using UnityEngine;
    
    /// <summary>
    /// Get和Post最直观的区别就是GET把参数包含在URL中,POST通过request body传递参数。
    /// </summary>
    public class HttpTest : MonoBehaviour {
        /*
        The WWW class can be used to send both GET and POST requests to the server. The WWW class will use GET by default and POST if you supply a postData parameter.
        See Also: WWWForm for a way to build valid form data for the postData parameter.
        Note: URLs passed to WWW class must be '%' escaped.
        Notes http://, https:// and file:// protocols are supported on iPhone. ftp:// protocol support is limited to anonymous downloads only. Other protocols are not supported.
        Note: When using file protocol on Windows and Windows Store Apps for accessing local files, you have to specify file:/// (with three slashes). 
        */
        /// <summary>
        /// get方法
        /// </summary>
        /// <returns></returns>
        IEnumerator Get()
        {
            string fullUrl = @"http://xxxxxx?id=0";//id为参数
    
            using (WWW www = new WWW(fullUrl))
            {
                yield return www;
                if (www.error != null)
                {
                    Debug.LogError("error:" + www.error);
                }
                Debug.Log(www.text);
            }
        }
    
    
        /// <summary>
        /// application/json连接类型
        /// </summary>
        /// <returns></returns>
        IEnumerator PostJson()
        {
            string fullUrl = @"http://xxxxxxxx";
    
            //加入http 头信息
            Dictionary<string, string> JsonDic = new Dictionary<string, string>();
            JsonDic.Add("Content-Type", "application/json");
    
            //body
            SendData sendData = new SendData();
            sendData.app_key = "1bf5376b82f88384ebe2297327ae2f9fe547dfed";
            sendData.time_stamp= "1551174536";
            sendData.nonce_str= "123456789";
            sendData.sign= "1bf5376b82f88384ebe2297327ae2f9fe547dfed";
            sendData.img_type= "URL";
    
            byte[] data = System.Text.Encoding.Default.GetBytes(JsonUtility.ToJson(sendData));
    
            using (WWW www = new WWW(fullUrl, data, JsonDic))
            {
                yield return www;
                if (www.error != null)
                {
                    Debug.LogError("error:" + www.error);
                }
                Debug.Log(www.text);
            }
        }
    
        /// <summary>
        /// application/x-www-form-urlencoded连接类型
        /// </summary>
        /// <returns></returns>
        IEnumerator PostForm()
        {
            string fullUrl = @"http://xxxxxxxx";
    
            //加入http 头信息
            Dictionary<string, string> JsonDic = new Dictionary<string, string>();
            JsonDic.Add("Content-Type", "application/x-www-form-urlencoded");
            JsonDic.Add("cache-control", "no-cache");
            JsonDic.Add("Postman-Token", "901451c5-e8c6-4322-8e63-754170323404");
    
            //body
            WWWForm form = new WWWForm();
            form.AddField("app_key", "1bf5376b82f88384ebe2297327ae2f9fe547dfed");
            form.AddField("time_stamp", "1551174536");
            form.AddField("nonce_str", "123456789");
            form.AddField("sign", "1bf5376b82f88384ebe2297327ae2f9fe547dfed");
            form.AddField("img_type", "URL");
    
            using (WWW www = new WWW(fullUrl, form.data, JsonDic))
            {
                yield return www;
                if (www.error != null)
                {
                    Debug.LogError("error:" + www.error);
                }
                Debug.Log(www.text);
            }
        }
    }
    [Serializable]
    public class SendData
    {
        public string app_key;
        public string time_stamp;
        public string nonce_str;
        public string sign;
        public string img_type;
    }
  • 相关阅读:
    1085 PAT单位排行
    安装MongoDB并且添加用户
    同源政策,发送请求时携带cookie信息
    博客园文章编辑时实现语法高亮
    template中的时间格式如何修改
    Node模块下载路径的更改设置
    JavaScript--遍历
    JavaScript--作用域
    JavaScript--arguments
    JavaScript--apply&call
  • 原文地址:https://www.cnblogs.com/Jason-c/p/10559141.html
Copyright © 2011-2022 走看看