UnityWebRequest POST to PHP not work
我将文档与WWWForm一起使用:https://docs.unity3d.com/Manual/UnityWebRequest-SendingForm.html
C#:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 | void Start() { StartCoroutine(Upload()); } IEnumerator Upload(){ yield return Upload1(); yield return Upload2(); } IEnumerator Upload1() { List<IMultipartFormSection> formData = new List<IMultipartFormSection>(); formData.Add( new MultipartFormDataSection("field1=foo&field2=bar") ); //formData.Add( new MultipartFormFileSection("my file data","myfile.txt") ); UnityWebRequest www = UnityWebRequest.Post(url, formData); yield return www.SendWebRequest(); if(www.isNetworkError || www.isHttpError) { Debug.Log(www.error); } else { Debug.Log("Form upload complete!"); Debug.Log("MULTIPART:" + www.downloadHandler.text ); } } IEnumerator Upload2() { WWWForm form = new WWWForm(); form.AddField("myField","myData"); UnityWebRequest www = UnityWebRequest.Post(url, form); yield return www.SendWebRequest(); if(www.isNetworkError || www.isHttpError) { Debug.Log(www.error); } else { Debug.Log("Form upload complete!"); Debug.Log("WWWForm:" + www.downloadHandler.text ); } } |
PHP:
1 2 3 4 5 6 7 8 9 10 11 |
响应(MULTIPART和WWWForm):
$ _POST为空...(这是我的问题)
使用Unity 2017.3。
我以前使用过UnityWebRequest.Send(Unity 5.6),它对我一直有效,直到过时。
谢谢。
这似乎对我有用,我希望能有所帮助。
1 2 3 4 5 | UnityWebRequest www = UnityWebRequest.Post(url, formData); www.chunkedTransfer = false;////ADD THIS LINE yield return www.SendWebRequest(); |
现在,我正在尝试相同的操作,由于在下一版本中将不赞成使用WWW类和WWWForm,所以我试图找到一种不使用不赞成使用的类的解决方案。
最后,我了解到,如果您只需要发送带有字符串的表单,则实际上并不需要使用List(例如,现在我将其用于Dropbox中用于代码流身份验证的http帖子)。
只需使用Dictionary,就可以了(您甚至不需要使用www.chunkedTransfer = false;)。
1 2 3 4 5 6 | Dictionary<string, string> form = new Dictionary<string, string>(); form.Add("code", token); form.Add("grant_type","authorization_code"); form.Add("client_id", myid); form.Add("client_secret", mysecret); form.Add("redirect_uri","http://" + localhost +":" + port + '/'); |
我尝试了上述所有答案,但没有任何效果,但是我注意到,Unity添加了一个Request Header:
1 | upgrade-insecure-requests 1 |
所以我将网址升级为https://
它仍然不能与
请改用WWWForm。 PHP期望使用application / x-www-form-urlencoded表单数据,而不是多部分。
1 2 3 4 | WWWForm form = new WWWForm(); form.AddField("myField","myData"); UnityWebRequest www = UnityWebRequest.Post(url, form); |