2014-11-04 3 views
0

У меня есть сервер и клиент. Мой сервер отправляет HttpResponse в текстовом формате. Я могу получить текст на клиенте. Мне нужно преобразовать текст в объект HttpResponse. Существуют ли библиотеки с открытым исходным кодом или встроенные механизмы java/Android для этого?ByteArray to HttpResponse

Все, что у меня есть, это преобразование HttpResponse в текст.

+0

Как вы получаете ByteArray,? –

+0

используя recv системный вызов. – Kishore

+0

'Мой сервер отправляет HttpResponse в byteArray'. Http-сервер является http-сервером и как таковой будет отправлять только текст, изображения или документы. Это просто поток байтов. Поэтому мне интересно, что вы подразумеваете под ответом как массив байтов. – greenapps

ответ

0

Попробуйте этот путь

ByteArrayOutputStream baos = new ByteArrayOutputStream(); 
response.getEntity().writeTo(baos); 
byte[] bytes = baos.getBytes(); 

Затем можно добавить содержимое в другой HttpResponse объекта следующим образом:

HttpResponse response = httpClient.execute(new HttpGet(URL)); 
response.setEntity(new ByteArrayEntity(bytes)); 
+0

В принципе мне нужна библиотека с открытым исходным кодом HttpParser. – Kishore

0

Просто сделать это с помощью Apache Commons IO: http://commons.apache.org/proper/commons-io/

private byte[] receiveByteArrayData(HttpURLConnection httpURLConnection) 
    throws IOException 
{ 
    return IOUtils.toByteArray(httpURLConnection.getInputStream()); 
} 

Отправка byte[] данные:

URL url = new URL("http://your.url.here:yourPortNumber/something"); 
    HttpURLConnection httpUrlConnection = (HttpURLConnection) url.openConnection(); 
    httpUrlConnection.setDoInput(true); 
    httpUrlConnection.setDoOutput(true); 
    httpUrlConnection.setRequestProperty("Content-Type", "application/octet-stream"); 
    httpUrlConnection.setRequestMethod("POST"); 
    httpUrlConnection.setFixedLengthStreamingMode(bytes.length); 

    httpUrlConnection.connect(); 

    httpUrlConnection.getOutputStream().write(bytes); 
    httpUrlConnection.getOutputStream().flush(); 
    if (httpsUrlConnection.getResponseCode() == 200) //OK 
    { 
     System.out.println("successfully uploaded data"); 
    } 
    httpUrlConnection.disconnect();