unity3d Unity http WebRequest将数据发布/发送到输入字段

gijlo24d  于 2022-11-25  发布在  其他
关注(0)|答案(1)|浏览(201)

我想使用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(我想)因为每次都是不同的凭证。
非常感谢您的帮助!

ve7v8dk2

ve7v8dk21#

当你提交数据的时候,你实际上是在填写一个表单,然后提交这个表单。你首先需要了解的是,你的应用程序并不与网站的前端交互,它只与手头的表单交互。
因此,假设网站是PHP网站,在某个点上会有一些逻辑,将用户参数和密码参数作为GET参数,并基于这些参数执行一些操作。
I cannot recommend this tutorial series enough for what you're trying to do.
其次,请不要通过Unity的Web Request实用程序将密码以明文形式发送到任何网站。这根本不安全。这是一个非常敏感的主题,您可以从Unity获得密码后立即对每个密码进行哈希处理,然后将哈希处理后的表单提交到数据库。
对于最后一部分,最好的方法可能是使用API,而不是像上面的教程那样使用简单的PHP网站。

相关问题