Pergunta

Estou usando o urllloader para postar em um servidor. A resposta XML do servidor pode responder com um erro 404 ou 403 (proibido). No entanto, não consigo obter os códigos de resposta.

Aqui está o código

  var urlString:String = "some url";
  var urlRequest:URLRequest = new URLRequest(urlString);
  var loader:URLLoader = new URLLoader();
  loader.addEventListener( Event.COMPLETE, setXMLData );
  loader.addEventListener( IOErrorEvent.IO_ERROR, ioHandler );
  loader.addEventListener( HTTPStatusEvent.HTTP_STATUS, httpStatusHandler );

//...

public function httpStatusHandler(evt:HTTPStatusEvent):void {
    trace("status is " + evt.status);
}

O status é sempre 0, independentemente de eu voltar 200, 400, 404, 301, 500, etc ...

Alguma ideia?

Foi útil?

Solução

Apenas para o ar, você pode usar o httpronsestatus. Caso contrário, no flash/flex sem ar, você não pode.

http://livedocs.adobe.com/flash/9.0/actionscriptlanprefv3/flash/net/urllloader.html#event:httpronsestatus

Evento HttproSestatus
Tipo de objeto de evento: flash.events.httpstatusevent httpstatusevent.type Property = flash.events.httpstatusevent.http_restonse_status

Versão do idioma: ActionScript 3.0 Versões de tempo de execução: AIR 1.0 AIR 1.0

Despachado se uma chamada para o método load () tentar acessar dados sobre HTTP, e a Adobe Air puder detectar e retornar o código de status da solicitação. Ao contrário do evento Httpstatus, o evento HTTPRESPONSESTATUS é entregue antes de qualquer dados de resposta. Além disso, o evento HTTPRESPONSESTATUS inclui valores para as propriedades ResponseHeaders e Responseurl (que são indefinidas para um evento httpstatus. Observe que o evento HTTPRESPONSESTATUS (se houver) será enviado antes (e além de) qualquer evento completo ou de erro.

Outras dicas

A capacidade de olhar para os cabeçalhos é limitada em vários navegadores; portanto, o Flash tem um problema em passar as informações. Isso é atribuído principalmente às configurações do navegador, mas ainda não encontrei uma onde ele realmente funcione. saída de eventos de status.

Desisti e fiz o arquivo imprimir o código de resposta em meus projetos, não maravilhosos (e derrotar um pouco), mas parece funcionar.

Como uma resposta tardia (FWIW):

Pelo que li, os códigos de status que você recebe depende do navegador em que o Flash Player está sendo executado.

Um artigo Diz que você só pode obter 200 ou 500. Uma pergunta Diz que eles estavam recebendo 207 em Chrome, mas 0 no Firefox.

Pessoalmente, eu testei usando o Dev Flash player, bem como uma versão ActiveX e consegui obter muitos códigos de status HTTP 2xx/4xx diferentes (mas não consegui obter os códigos de redirecionamento 3xx que tentei porque os pedidos foram redirecionados e retornados 200s ).

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top