【发布时间】:2012-01-13 08:52:22
【问题描述】:
我有一个发送回 JSON 对象的 Servlet,我想在另一个 Java 项目中使用这个 servlet。我有这种方法可以得到结果:
public JSONArray getSQL(String aServletURL)
{
JSONArray toReturn = null;
String returnString = "";
try
{
URL myUrl = new URL(aServletURL);
URLConnection conn = myUrl.openConnection();
conn.setDoOutput(true);
BufferedReader in = new BufferedReader( new InputStreamReader( conn.getInputStream() ) );
String s;
while ((s = in.readLine()) != null )
returnString += s;
in.close();
toReturn = new JSONArray(returnString);
}
catch(Exception e)
{
return new JSONArray();
}
return toReturn;
}
这很有效,但我面临的问题如下: 当我同时执行多个请求时,结果会混淆,有时我会收到与我发送的请求不匹配的响应。
我怀疑这个问题与我获得响应的方式有关:阅读器从连接的 InputStream 读取字符串。
如何确保我收到一个请求 -> 一个相应的回复? 有没有更好的方法从我的 servlet 中检索我的 JSON 对象?
干杯, 蒂姆
【问题讨论】:
-
这是ajax调用吗?如果是这样,您是否正在检查响应状态代码?
-
将此方法标记为同步。您正在请求 servlet 的当前项目的类型。
-
toReturn从未在方法中声明。所以我猜:全局变量-> 并发问题。或者它只是一个糟糕的复制/粘贴? -
你好,@Grooveek:抱歉复制粘贴错误,我编辑了它。它现在被宣布。
-
@thinksteep:AJAX 调用是什么意思?这是一个普通的 Java 项目——我只是想调用和使用某个地方存在的 servlet。