 
     public function start():void {
       handle.onData(onGetData);
-      sendRequest(describeReq());
+      handle.writeUTFBytes(describeReq());
       state = STATE_DESCRIBE_SENT;
     }
 

      var interleavedChannels:String = interleaveChannelIndex++ + "-" + interleaveChannelIndex++;

      var p:String = url.isAbsolute(block.control) ? block.control : contentBase + block.control;
      return getCommandHeader("SETUP", p) +
             getCSeqHeader() +
             getUserAgentHeader() +
             getSessionHeader() +
             "Transport: RTP/AVP/TCP;unicast;interleaved=" + interleavedChannels + "\r\n" +
             "Date: " + new Date().toUTCString() + "\r\n" +
             "\r\n";
    }


    private function playReq():String {
      return getCommandHeader("PLAY", contentBase) +
             getCSeqHeader() +
             getUserAgentHeader() +
             getSessionHeader() +
             "\r\n";
    }

    private function teardownReq():String {
      return getCommandHeader("TEARDOWN", contentBase) +
             getCSeqHeader() +
             getUserAgentHeader() +
             getSessionHeader() +
             "\r\n";
    }

    private function getCommandHeader(command:String, url:String):String {
      return command + " " + url + " RTSP/1.0\r\n";
    }

    private function getCSeqHeader():String {
      return "CSeq: " + (++cSeq) + "\r\n";
    }

    private function getUserAgentHeader():String {
      return "User-Agent: Slush\r\n";
    }

    private function getSessionHeader():String {
      return (session ? ("Session: " + session + "\r\n") : "");
    }

    private function sendRequest(request:String):void {
      handle.writeUTFBytes(request);
    }
  }
}

    }

    private function describeReq():String {
      return "DESCRIBE " + urlParsed.urlpath + " RTSP/1.0\r\n" +
             "CSeq: " + (++cSeq) + "\r\n" +
             "User-Agent: " + userAgent + "\r\n" +
             "Accept: application/sdp\r\n" +
             "\r\n";
    }
