質問

私は、JSON で送信するいくつかの Web サービス (RESTful なものとそうでないもの) からデータを取得する必要がある機能を備えたクライアント側 Java アプリケーションを開発しています。JavaScript や Web ブラウザは使用せず、GUI 用の Swing を使用してローカルで実行されるプレーンな JAR ファイルだけを使用します。

これは新しい問題や固有の問題ではありません。確かに、HTTP 経由の JSON データ送信を処理するオープン ソース ライブラリがいくつか存在するはずです。JSON を解析するものはすでに見つけていますが、JSON Web サービスを利用するための HTTP 通信を処理するものを見つけるのに苦労しています。

これまでのところ、解決策の少なくとも一部が含まれている可能性がある Apache Axis2 を見つけましたが、それが必要なことを実行するかどうか、またはその使用方法を知るのに十分なドキュメントがありません。おそらく問題の一部は、私に Web サービスの経験がないため、見たときに解決策を知ることができないことです。皆さんの何人かが私に正しい方向を示してくれることを願っています。例が役立つでしょう。

役に立ちましたか?

解決

アパッチ httpclient 4.0 ビジネスで最高であり、適度に学習しやすいです。

簡単にしたい場合は、使用できます htmlunit ブラウザの動作を模倣して、コンテンツを簡単に取得できます(HTML、JavaScript、およびCSSに解析することもできます。コンテンツでJavaScriptコードを実行できるため、JSON.Parseまたはその他の等価関数を使用するためにJSONファイルを解析することもできます)ウェブ上の任意のページの。

したがって、htmlunitの場合はサンプルコードがあります。

WebClient wc = new WebClient(BrowserVersion.FIREFOX_3_6);
HtmlPage page = wc.getPage("http://urlhere");
page.executeJavaScript("JS code here");

しかし、それはあなたの要件のためにかなり重いかもしれないので、の使用を強くお勧めします httpclient 図書館。 JavaのJSONライブラリをたくさん見つけることができると確信していますが、ここにあなたのためのものがあります JSON-LIB

他のヒント

urlconnectionに対処するよりも少し快適にしたい場合は、JavaのRestyをチェックしてください。シンプルで軽量ですが、それでもかなり新しいです。

http://beders.github.com/resty

JSONの例は次のとおりです。

Resty r = new Resty();
String name = r.json("http://ws.geonames.org/postalCodeLookupJSON?"+
    "postalcode=66780&country=DE").get("postalcodes[0].placeName").toString();

依存関係はありません。 1つの小さな瓶とあなたは行ってもいいです。

シンプルなJava Json Libaryを使用してやりました。 Googleライブラリを使用してください。

URL url = new URL("http://www.siteconsortium.com/services/hello.php");
BufferedReader in = new BufferedReader(new InputStreamReader(url.openStream()));

JSONParser parser=new JSONParser();
Object object = parser.parse(in);

JSONArray array = (JSONArray) object;        
JSONObject object2 = (JSONObject)array.get(0);
System.out.println(object2.get("hello")); 

WebサービスがOAuthとアクセストークンを使用している場合、上記の例を使用することはできません。

Web サービスが RESTful であることは素晴らしいことです。RESTful Web サービスは、開発も利用も非常に簡単です。ネットワーク経由で JSON データを送信するために特別な注意を払う必要はありません...データは JSON 形式か XML 形式かにかかわらず、HTTP ヘッダーに埋め込まれます。次のコード スニペットは、この概念を理解するのに役立ちます。

httpConnection = new HTTPConnectionManager(request);
HttpURLConnection httpURLConnection = httpConnection.connect();
int responseCode = httpURLConnection.getResponseCode();
if (responseCode == HttpURLConnection.HTTP_OK) {
    in = httpURLConnection.getInputStream();
    int x;
    StringBuilder stringBuilder = new StringBuilder();
    while ((x = in.read()) != -1) {
        stringBuilder.append((char) x);
    }
    XMLParser xmParser = new XMLParser();
    ....
    ....
}

このコードでは、Web サービスから XML 形式でデータを受信して​​います。データを受信した後、 StringBuilder オブジェクト、XML を解析しています。同様に、このコードを使用して Web サービスを呼び出し、JSON データを受信できます。javaJSON APIを使用できます。 ここ, JSON 表記からデータを抽出します。

コードがお役に立てば幸いです...

追伸: HTTPConnectionManager,XMLParser そして Request(request object) クラスは標準 API ではありません。これらは、複数の Web サービス呼び出しを処理するために私自身のアカウントによって作成されました。このコード スニペットは、私のアイデアを伝えるためのものです。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top