0

我想通过一个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();
4

2 回答 2

0

您应该将 json 数据写入 outputStream 作为 out.write(json.getBytes()); . 请参阅下面的完整代码:

String _url = "http://localhost:8080/jsf/test";
URL url = new URL(_url);
String json = "[{\"id\":\"DFAB8108D69642EBBD461160B4519B0F\",\"name\":\"name1\"},{\"id\":\"B048B2521A5619DCE0440003BA11CFDA\",\"name\":\"name2\"}]";
HttpURLConnection urlconn = (HttpURLConnection) url.openConnection();
urlconn.setRequestMethod("POST");
urlconn.setDoOutput(true);

OutputStream out = urlconn.getOutputStream();
out.write(json.getBytes());
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.toString());
rd.close();
于 2013-08-20T09:24:34.407 回答
0

尝试这样的事情

String _url = "http://localhost:8080/jsf/test";
URL url = new URL(_url);
String json = "[{\"id\":\"DFAB8108D69642EBBD461160B4519B0F\",\"name\":\"name1\"},{\"id\":\"B048B2521A5619DCE0440003BA11CFDA\",\"name\":\"name2\"}]";
HttpURLConnection urlconn = (HttpURLConnection) url.openConnection();

    urlconn .setDoOutput(true);
    urlconn .setRequestProperty("Content-Type", "application/json");
    urlconn .setRequestProperty("Accept", "application/json");
    urlconn .setRequestMethod("POST");
    urlconn .connect();

    OutputStream os = httpcon.getOutputStream();
    os.write((json.getBytes("UTF-8"));

    os.close();
于 2013-08-20T09:31:49.203 回答