2011-02-08 9 views
0

GWTからリモートサーブレットを呼び出そうとしていますが、GWT-RPCは実際には動作していないようですので、私はRequestBuilderを使ってそれを実行しようとしています。ここでGWTからリモートサーブレットを呼び出す

は、コードスニペットです:

String url = "http://some-remote-host:8888/GWTJSTest/SomeServlet?name=" + textBox.getText(); 
    RequestBuilder requestBuilder = new RequestBuilder(RequestBuilder.GET, url); 
//    requestBuilder.setHeader("Origin", "*"); 
//    requestBuilder.setHeader("Access-Control-Allow-Origin", "*"); 
    try 
    { 
     requestBuilder.sendRequest(null, new RequestCallback() 
     { 
      public void onResponseReceived(Request request, Response response) 
      { 
       if (response.getStatusCode() == 200) 
       { 
        Window.alert(response.getText()); 
       }else 
       { 
        Window.alert(response.getText() + " : " + response.getStatusCode() + response.getStatusText()); 
       } 
      } 

      public void onError(Request arg0, Throwable arg1) 
      { 
       Window.alert(arg1.toString()); 

      } 
     }); 
    } catch (RequestException e) 
    { 
     Window.alert("CATCH BLOCK: " + e.getMessage()); 
     e.printStackTrace(); 
    } 

は実際には、IE8はデータを返しますが、警告メッセージの後に、しかし、Firefoxはしません!どうしてこれなの?

ご覧のとおり、いくつかのリクエストヘッダーを設定しようとしていますが、方法はありません。

+0

(サーバとクライアントの間でJSONPを変換) <add-linker name="xs" />.gwt.xml

をそしてJsonpRequestBuilderGWT-PRCを置き換え、あなただけのだけ呼び出すことができますサーバーのプロキシサーブレットを使用して、他のサーバーのメソッドを呼び出すことができます。 –

答えて

0

私が追加しました:あなたは別のサーバーのメソッドを呼び出すことはできません

0

あなたがあなた自身のサーバーとポート(あなたのGWTのページが上にあるものと同じもの)に要求を作るしようとしている場合は、との最初の行に置き換えます。あなたがしようとしている場合

String url = "/GWTJSTest/SomeServlet?name=" + textBox.getText(); 

を別のサーバー、または自分のサーバー上の別のポートと話す場合は、Same Origin Policyはそれをやめます。自分のサーバーからプロキシする必要があります。あなたはとの対話他のドメインを使用しない場合は別の方法として、あなたが代わりに*のちょうどあなた自身のドメインを指定することができます

Access-Control-Allow-Origin: * 

を:

0

リモートサーブレットは、あなたが持っているCORSヘッダーを設定する必要があるものですリモートサーブレット。

関連する問題