zoukankan      html  css  js  c++  java
  • 在Unity3D中使用json作为post数据

    1. 问题描述
      用U3d的UnityWebRequest类Post数据时,服务端返回报错信息:"Solve request fail. Post data format problem."而使用python脚本模拟Post时却不会报错,正常返回结果。

    2. 问题定位
      首先,U3d和服务端是能正常通信的,返回的报错信息是来自服务器程序的返回json中的errorinfo。用fillder查看从u3d访问和python脚本访问的区别,发现Content-Type的类型不同。
      u3d中的WWWForm默认使用了"application/x-www-form-urlencoded",而python脚本的没有定义,且python脚本中是把数据组织成json格式发送的。

    3. 问题原因
      http协议中的请求头中的Content-Type是用来定义消息体里的数据是怎么编码的。
      application/x-www-form-urlencoded: 序列化数据,以“键值对”用&连接键的方式。
      application/json: 消息体中数据以json的格式编码
      multipart/form-data: 用二进制传输,有分隔符
      text/plain: 纯文本传输

    4. 解决方法

            //postParams是传参的对象,通过对json字符串用UTF8编码
            byte[] postBytes= Encoding.UTF8.GetBytes(JsonUtility.ToJson(postParams));
            UnityWebRequest uwr = new UnityWebRequest(url, "POST");
            uwr.uploadHandler = new UploadHandlerRaw(postBytes);
            uwr.downloadHandler = new DownloadHandlerBuffer();
            //设置Content-Type类型
            uwr.SetRequestHeader("Content-Type", "application/json;charset=utf-8");
            yield return uwr.SendWebRequest();
    
    蓝闪的博客 http://www.cnblogs.com/stan-si/
  • 相关阅读:
    关于前端开发中的“收口”思想
    Ajax 完整教程(转载)
    GitHub与Git指令入门
    自制一个H5图片拖拽、裁剪插件(原生JS)
    程序猿如何“智斗”产品经理
    Spark 的调度器
    Spark shuffle 过程
    Spark on Yarn 流程
    Spark shuffle 相关参数调优
    Spark shuffle 相关参数调优(带记忆)
  • 原文地址:https://www.cnblogs.com/stan-si/p/15190429.html
Copyright © 2011-2022 走看看