Запрос Dart каким-то образом удался?

Я разрабатываю приложение dart, которое будет использовать службу REST, которую я создаю. Я начал писать код дротика для выполнения ajax-запроса к моей конечной точке входа. Однако, даже когда мой запрос ajax дротика должен завершиться неудачей, он утверждает, что он преуспел.

У меня нет запущенных и запущенных служб (и даже если бы я это сделал, сейчас использовал бы неправильный домен/порт), но этот код каждый раз дает 200 OK HttpResponse:

class PlayerController {

  const PlayerController();

  static const String LOGIN_URL = "login";

  void login(String username, String password) {
    Map<String, String> headers = {"Content-Type": "application/x-www-form-urlencoded"};
    String body = "j_username=$username&j_password=$password&submit=Login";
    HttpRequest.request(LOGIN_URL, method: "POST", requestHeaders: headers, sendData: body)
      .then((request) => processLogin(request, username))
      .catchError((e) => processLoginError(e));
  }

  void processLogin(var whatIsThis, String username) {
    query("#loginButton").text = "Logout";
    //TODO get the player then set them
  }

  void processLoginError(var e) {
    print("total failure to login because of $e");
  }
}

Он всегда обращается к методу processLogin и никогда не обращается к методу processLoginError. Кто-нибудь знает, почему это может быть? Должен ли я выполнять этот запрос ajax по-другому? (Если вы не могли догадаться, это будет вход в весеннюю безопасность).

Я где-то читал, что запросы файловой системы всегда выполняются успешно. Дарт каким-то образом делает это запросом файловой системы, а не веб-запросом?


person CorayThan    schedule 08.08.2013    source источник
comment
Можете ли вы использовать что-то вроде http::localhost:8080/login в качестве URL-адреса? В противном случае, цитируя документы Requests to file:// URIs will also never fail- the Future will always complete successfully, even when the file cannot be found.   -  person DrColossos    schedule 08.08.2013


Ответы (1)


Это связано с тем, что запрос фактически завершается успешно.

Ваш запрос на «логин» фактически вызовет http://127.0.0.1:6521/[Path_to_your_Dart_file]/login

Сервер, запущенный Dart при работе в Dartium (127.0.0.1:6521), кажется, отвечает на каждый запрос POST с HTTP 200 и пустым телом ответа.

Если вы измените метод с POST на GET, произойдет сбой, как и ожидалось.

Что касается того, почему сервер это делает - я действительно не знаю. На это должна ответить команда Dart.

person MarioP    schedule 08.08.2013
comment
Странный. Я думаю, ложные срабатывания никогда не бывают полезными при попытке проверить, действительно ли у вас что-то работает. Может быть, я попытаюсь найти их проблемы, чтобы увидеть, существует ли это. - person CorayThan; 08.08.2013
comment
Я не видел ни одного, поэтому создал новый - person CorayThan; 08.08.2013