2

こんにちは、SOメンバーの仲間、

次のような単純なgetリクエストを使用してXMLデータを返すWebサービスがあります。

http:// my-service:8082 / qc / getData?paramX = 0169&paramY = 2

サービスは、パラメータの値に従ってページに生のxmlを返します。

RequestBuilder、Requestなどを使用してGWTのGETリクエストからこのデータを取得しようとしています。ただし、応答には空のテキスト、ステータスコードがゼロ(何も意味せず、発生するはずもありません)が表示されます。等々。

これが機能しない簡略化されたコードです。

public class SimpleXML implements EntryPoint {

public void onModuleLoad() {

    this.doGet("http://my-service:8082/qc/getData", "0169", "2");
}

public void doGet(String serviceURL, String paramX, String paramY) {
    final String getUrl = serviceURL + "?paramX=" + paramX + "&idTarification=" + paramY;

    RequestBuilder builder = new RequestBuilder(RequestBuilder.GET, getUrl);

    try {
         Request response = builder.sendRequest(null, new RequestCallback() {

            @Override
            public void onResponseReceived(Request request, Response response) {
                response.getStatusCode(); // Gives me 0 (zero)  :(
            }

            @Override
            public void onError(Request request, Throwable exception) {
                // ... doesn't matter for this example
            }
        });
    } catch (RequestException e) {
        // ... doesn't matter for this example
    }
}

}

これがうまくいかない理由がわかりません。これは本当に単純なので、チュートリアルを見たことがありますが、それらはすべてこの方法を示しています。

前もって感謝します

4

1 に答える 1

4

その理由は、ブラウザが AJAX を使用したクロスサイト リクエストを許可していないためです ( Same Origin Policyを参照)。

つまり、HTML ページと同じサーバー、同じポート (同じプロトコルを使用) でのみサービスを呼び出すことができます。クロスサイト リクエストを実行する場合は、http://code.google.com/webtoolkit/doc/latest/tutorial/Xsite.htmlで説明されているように、JSONP を使用できます。

于 2011-06-16T18:08:11.873 に答える