首页 > 解决方案 > 无法使用 React 发送有效请求(正在使用 curl)

问题描述

我正在尝试连接到使用 aiohttp 制作的小型服务器。这是一个发布请求,这是使用 HTTPie 的样子(它也适用于 curl):HTTPIE 截图 所以这是我尝试使用的 react:

    const requestOptions = {
      method: 'POST',
      body: encodeURIComponent('username=thomas&password=yolo'),
      headers: {
        'Content-Type': 'application/x-www-form-urlencoded',
        'Accept': 'application/json'
      }
    };
    fetch("http://localhost:8080/login", requestOptions)
        .then(response => response.json())
        .then(data => console.log("data:" + data))

但是此请求不起作用:我在服务器端收到此错误:“预期用户名和密码字段”(服务器主文件 src:https ://hasteb.in/amucojas.py )。这是我的浏览器的屏幕:浏览器

正如您在此截图中看到的,发送的请求最后包含一个“:”。你认为这可能是问题所在吗?我做错什么了吗?在哪一边?

编辑:还尝试使用这些选项发送相同的请求:

    const requestOptions = {
      method: 'POST',
      body: JSON.stringify({ "username" : "thomas", "password" : "yolo"}),
      headers: {
        'Content-Type': 'application/json',
        'Accept': 'application/json'
      }
    };

它在浏览器中看起来好一些,但服务器返回了同样的错误。这是 curl -v 的结果: 卷曲 -v

标签: javascriptpythonreactjsrequest

解决方案


这是我在这个网站上找到的第一个解决方案。这可能不是最好的,因为它是为原生反应而设计的,但目前这对我有用:

    var details = {
      'username': 'thomas',
      'password': 'yolo'
    };

    var formBody = [];
    for (var property in details) {
      var encodedKey = encodeURIComponent(property);
      var encodedValue = encodeURIComponent(details[property]);
      formBody.push(encodedKey + "=" + encodedValue);
    }
    formBody = formBody.join("&");

    fetch('http://localhost:8080/login', {
      method: 'POST',
      headers: {
        'Content-Type': 'application/x-www-form-urlencoded;charset=UTF-8'
      },
      body: formBody
    })
      .then(response => response.json())
      .then(response => console.log(response));

我尝试使用 URLSearchParams 但它没有用。


推荐阅读