【发布时间】:2013-08-20 09:12:34
【问题描述】:
我想通过一个java应用程序发送一个json字符串,在servlet中没有得到这个json,我该怎么办,谁能帮助我? 这是我的 servlet 代码:
public void service(HttpServletRequest req, HttpServletResponse res)
throws ServletException, IOException {
BufferedInputStream in = new BufferedInputStream(req.getInputStream());
byte[] data = null;
byte[] bts = new byte[1024];
int index;
while ((index = in.read(bts)) >= 0) {
if (data == null) {
data = new byte[index];
System.arraycopy(bts, 0, data, 0, index);
}
else {
byte[] tmp = data;
data = new byte[tmp.length + index];
System.arraycopy(tmp, 0, data, 0, tmp.length);
System.arraycopy(bts, 0, data, tmp.length, index);
}
}
String json = new String(data);
System.out.print(json);
}
这是我的 java 应用程序:
String _url = "http://localhost:8080/jsf/test";
URL url = null;
HttpURLConnection urlconn = null;
String json = URLEncoder.encode(JSONObject.fromObject(req)
.toString(), "UTF-8");
url = new URL(_url);
urlconn = (HttpURLConnection) url.openConnection();
urlconn.setRequestMethod("POST");
urlconn.setDoOutput(true);
urlconn.setDoInput(true);
OutputStream out = urlconn.getOutputStream();
out.write(json.getBytes("UTF-8"));
out.flush();
out.close();
BufferedReader rd = new BufferedReader(new InputStreamReader(
urlconn.getInputStream(), "UTF-8"));
StringBuffer sb = new StringBuffer();
int ch;
while ((ch = rd.read()) > -1) {
sb.append((char) ch);
}
System.out.println(sb);
rd.close();
【问题讨论】:
-
您的代码从不发送 JSON。将其发送到连接的输出流,然后准确地告诉你发生了什么。
-
我试过这样的输出流OutputStream out = urlconn.getOutputStream(); out.write(json.getBytes("UTF-8")); out.flush(); out.close();但是不行
-
“它不起作用”对问题的描述非常糟糕。什么不起作用?它怎么行不通?如果遇到异常,堆栈跟踪是什么?当你去看医生时,你不会只说“我病了,很痛”。你描述症状,你的感受,在哪里。这里也一样。
-
我的意思是,我没有找到在我的 servlet 中获取这个 json 的方法
-
那么,您的意思是您遇到的问题是您不知道如何获取servlet 中的JSON?那么为什么不明确地问这个问题,为什么不显示 servlet 代码而不是客户端代码呢? servlet 是否被调用? servlet 中有调试跟踪吗?