![](/img/trans.png)
[英]Retrieve JSON from Rest Client Request trough Service To Web Application
[英]Using a JSON web service from a Java client application
我正在开发一个客户端Java应用程序,它具有一些功能,需要从一些以JSON传输的Web服务中获取数据(一些是RESTful,一些不是)。 没有JavaScript,没有Web浏览器,只是一个普通的JAR文件,它将使用Swing为GUI本地运行。
这不是一个新的或独特的问题; 肯定有一些开源库可以通过HTTP处理JSON数据传输。 我已经找到了一些将解析JSON,但我找不到任何能够处理HTTP通信来使用JSON Web服务的东西。
到目前为止,我发现Apache Axis2显然可能至少有部分解决方案,但我没有看到足够的文档知道它是否能满足我的需要,或者如何使用它。 也许问题的一部分是我没有Web服务的经验,所以当我看到它时,我无法知道解决方案。 我希望你们中的一些人能指出我正确的方向。 例子会有所帮助。
如果您想要比处理URLConnection更舒适一点,请查看Resty for Java。 简单,重量轻,但仍然很新。
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();
没有依赖。 一个小JAR,你很高兴。
Apache HttpClient 4.0是业界最好的,并且中等易学。
如果你想要更容易,你可以使用模仿浏览器行为的HtmlUnit ,这样你就可以轻松获取内容(并将其解析为Html,javascript和css,你也可以在内容上执行javascript代码,这样你就可以解析JSON文件到使用JSON网页上任何页面的.parse或任何其他等效函数)。
所以对于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
我使用一个简单的Java JSON库来完成它。 使用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数据......数据是否以XML格式的JSON格式嵌入到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表示法中提取数据。
希望代码会帮助你......
PS: HTTPConnectionManager
, XMLParser
和Request
( request
对象)类不是任何标准API。 它们由我自己的帐户编写,用于处理多个Web服务调用。 这段代码只是为了给你我的想法。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.