我想使用UnityWebRequest将数据发布到网站上的输入字段以进行授权。我可以将数据发布到名为“www.example.com“的网站https://httpbin.org/post,并且我收到了一条成功消息,提示我可以将数据发布到网站:
Success {
"args": {},
"data": "",
"files": {},
"form": {
"data": "LOL"
},
"headers": {
"Accept": "*/*",
"Accept-Encoding": "deflate, gzip",
"Content-Length": "8",
"Content-Type": "application/x-www-form-urlencoded",
"Host": "httpbin.org",
"User-Agent": "UnityPlayer/2021.3.11f1 (UnityWebRequest/1.0, libcurl/7.84.0-DEV)",
"X-Amzn-Trace-Id": "Root=1-63753ab1-7eb673a229988fc954b32ae8",
"X-Unity-Version": "2021.3.11f1"
},
"json": null,
"origin": "31.18.250.181",
"url": "https://httpbin.org/post"
}
但这只是将数据发送到空的地方,我想将数据发送到一个输入字段,如下所示:
<input type="text" name="_username">
这是授权与用户名和密码,后来我需要得到一个重定向网站的文本数据后登录。
这是代码:
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.Networking;
using Exception = System.Exception;
public class TestWebRequest : MonoBehaviour
{
// Start is called before the first frame update
void Start()
{
try
{
string url = "www.ling.com";
WWWForm form = new WWWForm();
form.AddField("_username", "test");
var request = UnityWebRequest.Post(url, form);
//request.SetRequestHeader("Content-Type", "application/json");
//request.SetRequestHeader("Accept", "text/csv");
//request.SetRequestHeader("appKey", "ABC");
StartCoroutine(onResponse(request));
}
catch (Exception e) { Debug.Log("ERROR : " + e.Message); }
}
private IEnumerator onResponse(UnityWebRequest req)
{
yield return req.SendWebRequest();
if (req.isNetworkError)
Debug.Log("Network error has occured: " + req.GetResponseHeader(""));
else
Debug.Log("Success "+req.downloadHandler.text );
byte[] results = req.downloadHandler.data;
Debug.Log("Second Success");
// Some code after success
req.Dispose();
}
}
我不能显示确切的链接,但正如我所说,它有两个输入字段,一个密码和一个用户名输入字段,需要填写授权,之后我需要提交的形式得到重定向,然后我想得到的文本数据,从其中获得工程.我不'我不知道这是否是最好的方法,但我需要访问网站上的文本数据,你必须登录,它不能用cookie(我想)因为每次都是不同的凭证。
非常感谢您的帮助!
1条答案
按热度按时间ve7v8dk21#
当你提交数据的时候,你实际上是在填写一个表单,然后提交这个表单。你首先需要了解的是,你的应用程序并不与网站的前端交互,它只与手头的表单交互。
因此,假设网站是PHP网站,在某个点上会有一些逻辑,将用户参数和密码参数作为
GET
参数,并基于这些参数执行一些操作。I cannot recommend this tutorial series enough for what you're trying to do.
其次,请不要通过Unity的Web Request实用程序将密码以明文形式发送到任何网站。这根本不安全。这是一个非常敏感的主题,您可以从Unity获得密码后立即对每个密码进行哈希处理,然后将哈希处理后的表单提交到数据库。
对于最后一部分,最好的方法可能是使用API,而不是像上面的教程那样使用简单的PHP网站。