0

次の場所にGETエンドポイントを公開するサードパーティのRESTfulWebサービスがあるとします。

http://someservice.com/api/askAnyQuestion

そして、そのサービスをヒットして、クエリ文字列に質問を配置したいと思います。

http://someservice.com/api/askAnyQuestion&q=Does%20my%20dog%20know%20about%20math%3F

クライアント側のGWTアプリケーションからこのサービスを利用するにはどうすればよいですか?私はRequestFactoryチュートリアルを読んでいますが、RFはデータアクセス層(DAL)とCRUDdingエンティティを提供するためだけのものであり、このユースケースに適しているかどうかは完全にはわかりません。

誰かがコードサンプルを提供できれば、追加のスーパーボーナスポイントが得られます。これは、私がすでに読んだGWTチュートリアルや、おそらく私も読んだGooglerのブログへのリンクだけではありません;-)。

4

2 に答える 2

1

RequestBuilderを使用できます。これを使用してRESTを正常に操作しました。

         RequestBuilder builder = new RequestBuilder(RequestBuilder.GET, url);
         try {
            builder.sendRequest(null, new RequestCallback() {
                @Override
                public void onError(Request request, Throwable exception) {
                    // process error
                }

                @Override
                public void onResponseReceived(Request request, Response response) {
                    if (200 == response.getStatusCode()) {
                        // process success
                    } else {
                        // process other HTTP response codes
                    }
                }
            });
        } catch (RequestException e) {
            // process exception
        }

クロスサイトリクエスト関連情報については、この質問もご覧ください。

于 2013-02-19T11:45:24.517 に答える
0

私は数日前に同じ問題を抱えていて、requestBuilderでそれを実装しようとしました。クロスドメインスクリプティングの問題が発生します。

https://developers.google.com/web-toolkit/doc/1.6/FAQ_Server#How_can_I_dynamically_fetch_JSON_feeds_from_other_web_domains

私はこれをサーバーへのRPCリクエストで処理し、そこからクロスドメインURLへのサーバー側HTTPリクエストを処理しました。

https://developers.google.com/web-toolkit/doc/latest/tutorial/Xsite

public static void SendRequest(String method, String notifications) {
    String url = SERVICE_BASE_URL + method;

    JSONObject requestObject = new JSONObject();
    JSONArray notificationsArray =null;
    JSONObject mainRequest = new JSONObject();
    try {
        notificationsArray = new JSONArray(notifications);
        requestObject.put("notifications", notificationsArray);

        mainRequest.put("request", requestObject);
    } catch (JSONException e1) {
        // TODO Auto-generated catch block
        e1.printStackTrace();
    }


    HttpURLConnection connection = null;
    try
    {
        URL server = new URL(url);
        connection = (HttpURLConnection) server.openConnection();
        connection.setRequestMethod("POST");
        connection.setRequestProperty("Content-Type", "application/json");
        connection.setDoInput(true);
        connection.setDoOutput(true);

        DataOutputStream writer = new DataOutputStream(connection.getOutputStream());
        writer.writeBytes(mainRequest.toString());
        writer.flush();
        writer.close();

        parseResponse(connection);
    }
    catch (Exception e)
    {
        System.out.println("An error occurred: " + e.getMessage());
    }
    finally
    {
        if (connection != null)
        {
            connection.disconnect();
        }
    }
}
于 2013-02-19T12:11:08.333 に答える