2017-02-13 81 views
1

我有asp.net网站API2服务器上验证码:POST参数始终是空只在Unity3d

[HttpPost] 
    [AllowAnonymous] 
    public IHttpActionResult Login(RequestLogin args) 
    { 
     //work 
    } 

我试图从“先进REST客户”发送POST请求与参数:

http://localhost:54382/api/Home/Login 
application/json 
{"Name":"asd","DeviceId":"818cd41169410e6f20ef55b2917d0e15e5cf072f"} 

...它工作完美!在登录方法中的参数是full

但 如果我试试这个从Unity3d:在登录方法

UnityWebRequest www; 
var url = http://localhost:54382/api/Home/Login; 
string jsonObj = JsonUtility.ToJson(request.args); 
Debug.Log(jsonObj); //{"Name":"asd","DeviceId":"818cd41169410e6f20ef55b2917d0e15e5cf072f"} 
www = UnityWebRequest.Post(url, jsonObj); 
www.SetRequestHeader("Content-Type", "application/json; charset=utf-8"); 
yield return www.Send(); 

ARGS包含值。

[Serializable] 
    public class RequestLogin 
    { 
     public string Name; 
     public string DeviceId; 
    } 

我伤了好几天。请帮助我

+0

你在说的是Unity 3D游戏引擎还是Unity依赖注入?很抱歉问这个问题,但是你错误地引用了DI软件包。 –

+0

Unity3d游戏引擎 – GLeBaTi

回答

4

我升级团结2017.3.0版本后遇到一模一样的问题。对我而言,修复工作是将UnityWebRequest.chunkedTransfer设置为false。 我的帖子方法看起来像这样:

public static UnityWebRequest PostJson(string url, string json) 
    { 
     UnityWebRequest request = new UnityWebRequest(url, UnityWebRequest.kHttpVerbPOST); 
     byte[] bodyRaw = new System.Text.UTF8Encoding().GetBytes(json); 
     request.uploadHandler = (UploadHandler)new UploadHandlerRaw(bodyRaw); 
     request.downloadHandler = (DownloadHandler)new DownloadHandlerBuffer(); 
     request.SetRequestHeader("Content-Type", "application/json"); 
     request.chunkedTransfer = false; 
     return request; 
    } 
+0

是的,一样。我相信这是根本原因。 https://issuetracker.unity3d.com/issues/www-request-fails-to-get-content-length-header – montag

1

通过阅读,好像你必须这样做,像这样的选项:

WWWForm form = new WWWForm(); 
form.AddField("Name", "asd"); 
form.AddField("DeviceId", "818cd41169410e6f20ef55b2917d0e15e5cf072f"); 

www = UnityWebRequest.Post(url, form); 

你可以尝试,如文档暗示?

+0

无法正常工作。相同的结果:空值:/ – GLeBaTi

+0

快速搜索我发现这个http://answers.unity3d.com/questions/1068919/unet-receiving-null-string-values-in-message.html 你也分享两个程序集中的RequestLogin? – Vect0rZ

+0

我已经与实体共享dll。放入Unity插件并添加到web api项目 – GLeBaTi