【问题标题】:Why is my XML http request returning HTML instead of JSON?为什么我的 XML http 请求返回的是 HTML 而不是 JSON?
【发布时间】:2019-06-02 11:45:37
【问题描述】:

我需要从网页获取 JSON 响应文本才能对其进行解析。然而,当我创建我的 XML HTTP 请求时,我得到的 HTML 甚至不是来自我请求的页面。

我已验证内容类型设置为 application/json,需要 xmlhttprequest 而不是 xhr2(不起作用),将 XMLHttpRequest.responseType 设置为“json”等等。我尝试了一个不同的 url (https://jsonplaceholder.typicode.com/todos/1) 并且我能够获取我的 JSON 响应文本。但是,使用我的“秘密 URL”(不幸的是无法提供),我得到了 HTML 响应。

我不确定我从哪里获得 HTML,我查看了 SauceLabs,但此时它失败了。我也尝试过 browser.getURL(),但我得到了一个

function myXMLRequest() {

  var XMLHttpRequest = require('xhr2');
  XMLHttpRequest.responseType = "json";
  var xmlhttp = new XMLHttpRequest(); 
  // this URL works, but my secret URL does not
  var url = "https://jsonplaceholder.typicode.com/todos/1";

  xmlhttp.onreadystatechange = function() {
    console.log("this.readyState: " + this.readyState + " 
    this.status: " + this.status);
  if (this.readyState === 4 && this.status === 200) {
      console.log("this.responseText: " + this.responseText);
  } else {
      console.log("I was not ready");
  }
  };
      xmlhttp.open("GET", url, true);
      xmlhttp.send();
    }

在有效的 URL 中,我收到如下响应文本:

{
  "userId": 1,
  "id": 1,
  "title": "delectus aut autem",
  "completed": false
}

我希望我的秘密 URL 获得这样的响应。目前它获得了一个 HTML 响应,从我的图片中可以看出。

【问题讨论】:

  • 您正在设置不存在的XMLHttpRequest.responseType 的静态属性。尝试设置xmlhttp.responseType,否则默认为text
  • 谢谢@ZorgoZ。我修好了。不幸的是,它仍然会导致同样的问题。

标签: json webdriver saucelabs


【解决方案1】:

您的秘密 URL 仅指向重定向页面。

在您的 XML http 请求中,您需要指定最终 URL -> 可能是表单操作中的那个(在您的图像中)。

【讨论】:

  • 这很奇怪。我的秘密 URL 不会将我重定向到任何地方,并且有 200 响应代码,而不是 302 等。我认为它正在将我重定向到某个地方,但我不知道为什么或如何做到这一点。无论如何,设置最终的秘密 URL 是让我看到图像的原因。它以前没有这样做。
猜你喜欢
  • 2023-04-05
  • 1970-01-01
  • 1970-01-01
  • 2020-05-12
  • 1970-01-01
  • 2021-08-10
  • 1970-01-01
  • 1970-01-01
  • 2015-09-21
相关资源
最近更新 更多