2013-08-08 6 views
1

저는 건물에있는 REST 서비스를 사용할 다트 응용 프로그램을 개발 중입니다. 내 로그인 끝점에 대한 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 메소드를 절대 사용하지 않습니다. 왜 이런 사람이 될지 아무도 모른다. 이 아약스 요청을 다른 방식으로 수행해야합니까? (추측 할 수 없다면, 봄 보안에 서명 할 것입니다.)

파일 시스템 요청이 항상 성공하는 곳을 읽었습니다. Dart가 어떻게 웹 요청이 아닌 파일 시스템 요청을하는 것입니까?

+1

URL로 http :: localhost : 8080/login과 같은 것을 사용할 수 있습니까? 그렇지 않으면 docs의'Request to file : // URIs를 인용해도 결코 실패하지 않을 것입니다. 파일을 찾을 수없는 경우에도 Future는 항상 성공적으로 완료됩니다. ' – DrColossos

답변

2

요청이 실제로 성공적으로 완료되기 때문입니다.

"로그인"으로 요청 실제로 http://127.0.0.1:6521/[Path_to_your_Dart_file]/login

(127.0.0.1:6521) Dartium에서 실행되는 HTTP 200와 모든 POST 요청 및 빈 응답 본문에 대답 할 것 같다 때 다트에 의해 시작 서버를 호출합니다.

POST에서 GET으로 메서드를 변경하면 예상대로 실패합니다.

서버가이 작업을 수행하는 이유는 무엇입니까? 이것은 다트 팀이 대답해야합니다.

+0

Strange. 거짓 긍정은 당신이 실제로 일하고 있는지 테스트하려고 할 때 결코 도움이되지 않는다고 생각합니다. 어쩌면 나는이 문제가 있는지 확인하기 위해 문제를 조사해 볼 것입니다. – CorayThan

+1

하나가 보이지 않아 [새로운 하나] (https://code.google.com/p/dart/issues/detail?id=12321)를 만들었습니다. – CorayThan