1
@POST
@Path("/getphotos")
@Produces(MediaType.TEXT_HTML)
public String getPhotos() throws IOException{
    BufferedReader rd = new BufferedReader(new InputStreamReader(request.getInputStream(),"UTF-8"));
    String line;
    while ((line = rd.readLine()) != null) {
        System.out.println(line);
    }
    return "ok";        
}

上記のコードは私のサーバー用です。しかし、このコードでは、文字列の「行」には値がありません。(常に) コードに問題はありますか?


クライアント側のコード

    String message = "message";
    URL url = new URL(targetURL);
    HttpURLConnection urlConnection = (HttpURLConnection) url.openConnection();

    urlConnection.setDoInput(true);
    urlConnection.setDoOutput(true);
    OutputStreamWriter wr = new OutputStreamWriter(urlConnection.getOutputStream());
    wr.write(message);
4

1 に答える 1

2

実際の への有効なハンドルがある限り、Jersey でリクエストのデータを手動で使用できますHttpServletRequest補足として、リクエストの本文は 1 回しか使用できないことに注意してください。

@Context
private HttpServletRequest request;

@POST
@Path("/")
public Response consumeRequest() {
    try {
        final BufferedReader rd = new BufferedReader(new InputStreamReader(
                request.getInputStream(), "UTF-8"));

        String line = null;
        final StringBuffer buffer = new StringBuffer(2048);

        while ((line = rd.readLine()) != null) {
            buffer.append(line);
        }
        final String data = buffer.toString();
        return Response.ok().entity(data).build();
    } catch (final Exception e) {
        return Response.status(Status.BAD_REQUEST)
                .entity("No data supplied").build();
    }
}

補足: Apache Commons IO のようなライブラリは、IO データを読み取るための堅牢な機能を提供します。

于 2013-02-22T16:56:54.940 に答える