У меня есть ниже фрагмент кода, который отлично работает при запуске из затменияпосылка данных через сеть не работает в java.io API
String str = "testing";
InputStream is = new ByteArrayInputStream(str.getBytes());
int length = is.available();
byte[] data = new byte[length];
is.read(data, 0, length);
System.out.println("output "+new String(data));
Когда я нарушу этот код, чтобы отправить данные по сети с использованием Jerser API клиента и попробуйте прочитать его на сервере с помощью Джерси. Я не получаю значение, которое я опубликовал. Клиентский код выглядит следующим образом
public static void main(String s[]) throws IOException {
ClientConfig config = new DefaultClientConfig();
Client client = Client.create(config);
String str = "testingthi";
InputStream is = new ByteArrayInputStream(str.getBytes());
WebResource webResource = client.resource("http://192.168.1.15:8090/JersySample/resources/stream/upload");
ClientResponse response = webResource.type(MediaType.APPLICATION_OCTET_STREAM).post(ClientResponse.class,is);
is.close();
}
код на сервер выглядит следующим образом
@Consumes(MediaType.APPLICATION_OCTET_STREAM)
public Response upload(InputStream is) {
try{
int size = is.available();
byte data[] = new byte[size];
is.read(data,0,size);
System.out.println(" Posted data is "+ new String(data)+" length is "+size+" stream size "+is.available());
is.close();
}catch (Exception e) {
e.printStackTrace();
}
return Response.ok().entity("Done").build();
}
Когда я прочитал строку с помощью Apache-Обще-Io API я получаю строковое значение, которое я отправил. Может кто-то объяснить, почему он не работает, используя API java.io, который работал в несетевой ситуации?
Вы не «отправляете InputStream по сети». Вы не можете. Вы отправляете * данные * по сети. – EJP