0

as3からサーブレットにデータを取得して正常に読み取ることができますが、サーブレットからas3に送り返すことができません。

以下は AS3 コードです。アプリケーションは tomcat サーバーにロードされます。

var request:URLRequest = new URLRequest("http://localhost:8080/Demo/UserDataControllerServlet");

var loader:URLLoader = new URLLoader();

 loader.dataFormat = URLLoaderDataFormat.VARIABLES;

  add_txt.text ="http://localhost:8080/Demo/UserDataControllerServlet";

  var _vars:URLVariables = new URLVariables();

  _vars.emailId = "abc@gmail.com";
  _vars.phoneNumber = "9898989898";
  _vars.userAddress = "abc";
  _vars.userName = "abc";
  _vars.vendorAddress = "abc";
  _vars.vendorName = "abc";

  request.data = _vars;

  request.method = URLRequestMethod.POST;

  loader.addEventListener(Event.COMPLETE, handleComplete);

  loader.addEventListener(IOErrorEvent.IO_ERROR, onIOError);
  loader.addEventListener(SecurityErrorEvent.SECURITY_ERROR, onSecurityError);
  loader.load(request);
  add_txt.text ="already sent........................";
  private function onSecurityError(event:SecurityErrorEvent):void {
  add_txt.text ="security error ........................";
  }

これは、応答が as3 に戻った後に実行されるはずです。

private function handleComplete(event:Event):void {

add_txt.text ="in the response function";                
var loader:URLLoader = URLLoader(event.target);             
trace("Message: " + loader.data);
add_txt.text = "========="+loader.data;             
}
private function onIOError(event:IOErrorEvent):void {
add_txt.text = "Error loading URL.";
trace("Error loading URL.");
this.parent.removeChild(this);
}

以下はサーブレット コードです。リクエストからデータを読み取ることはできますが、out.write および out.close の後で応答が as3 に戻りません。out.close() を削除しようとしましたが、それでも役に立ちませんでした。

        protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        String emailId  = request.getParameter("emailId");       
        String phoneNumber = request.getParameter("phoneNumber");
        String userAddress = request.getParameter("userAddress");
        String userName = request.getParameter("userName");
        response.setContentType("text/html");
        PrintWriter out = response.getWriter();
        out.write("Hello");
        out.close();
        }       

as3 でデータを受信できないというこの問題について、私を助けていただけませんか?

4

2 に答える 2

0

あなたはそこまでの道のりです。サーブレットへの呼び出しを Web サービス呼び出しとして扱う必要があります。AS は、サーブレットに対して Ajax リクエストを行うものと考えてください。「REST サーブレット」で検索してください。 http://www.mkyong.com/webservices/jax-rs/resteasy-hello-world-example/

于 2013-02-05T17:58:22.780 に答える
0

次のようなクエリ文字列形式の応答を AS3 に返す必要があると思います。

private function handleComplete(event:Event):void {

         add_txt.text ="in the response function";                 
         var loader:URLLoader = URLLoader(event.target);             
         trace("Message: " + loader.data.success); // loading [success] value from response
         add_txt.text = "========="+loader.data.success;             
}

protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        String emailId  = request.getParameter("emailId");       
        String phoneNumber = request.getParameter("phoneNumber");
        String userAddress = request.getParameter("userAddress");
        String userName = request.getParameter("userName");
        response.setContentType("text/html");
        PrintWriter out = response.getWriter();
        out.write("success=1");  // sending [success]
        out.close();
}       
于 2013-02-05T19:45:02.190 に答える