Ответ 1
Я думаю, есть более простой способ:
String result = EntityUtils.toString(resp_entity);
верно?
Я пытаюсь скрывать HTTP-ответ на строку, используя приведенный ниже код, но моя строка ответа заканчивается в середине любыми идеями, как преобразовать HTTP-ответ в строку, чтобы я не получал никакой проблемы с буфером.
private static String convertStreamToString(InputStream is) {
BufferedReader reader = new BufferedReader(new InputStreamReader(is));
StringBuilder sb = new StringBuilder();
String line = null;
try {
while ((line = reader.readLine()) != null) {
sb.append((line + "\n"));
}
} catch (IOException e) {
e.printStackTrace();
} finally {
try {
is.close();
} catch (IOException e) {
e.printStackTrace();
}
}
return sb.toString();
}
Любое предложение, пожалуйста, помогите. благодаря Deepesh
Я думаю, есть более простой способ:
String result = EntityUtils.toString(resp_entity);
верно?
Получите ответ InputStream следующим образом:
httpResponse = client.execute(request);
HttpEntity entity = httpResponse.getEntity();
InputStream is = entity.getContent();
Попробуйте этот метод:
private static String convertStreamToString(InputStream is) {
BufferedReader reader = new BufferedReader(new InputStreamReader(is));
StringBuilder sb = new StringBuilder();
String line = null;
try {
while ((line = reader.readLine()) != null) {
sb.append((line + "\n"));
}
} catch (IOException e) {
e.printStackTrace();
} finally {
try {
is.close();
} catch (IOException e) {
e.printStackTrace();
}
}
return sb.toString();
}
HttpResponse response = http.execute(httpMethod);
int responseCode = response.getStatusLine().getStatusCode();
switch(responseCode) {
case 200:
HttpEntity entity = response.getEntity();
if(entity != null) {
String responseBody = EntityUtils.toString(entity);
}
break;
}
См. http://cdrussell.blogspot.com.es/2011/12/android-get-body-of-http-response-as.html
HttpPost httppost;
DefaultHttpClient httpclient;
ResponseHandler <String> res=new BasicResponseHandler();
List<NameValuePair> nameValuePairs;
String bytesSent;
httppost = new HttpPost(URL OF YOUR SITE);
HttpParams params = new BasicHttpParams();
HttpProtocolParams.setContentCharset(params, "UTF-8");
httpclient = new DefaultHttpClient(params);
nameValuePairs = new ArrayList<NameValuePair>(2);
nameValuePairs.add(new BasicNameValuePair("key1", value1));
nameValuePairs.add(new BasicNameValuePair("key2", value2));
nameValuePairs.add(new BasicNameValuePair("key3", value3));
httppost.setEntity(new UrlEncodedFormEntity(nameValuePairs));
bytesSent = httpclient.execute(httppost, res);
Это код HTTPPOST, с помощью которого вы можете получить ответ в String.
Если вам нужно передать строку запроса на сервер, вы можете использовать nameValuePairs
Если вы ищете более надежный способ сделать это для обработки кодировок и gzipped-ответов, попробуйте следующее:
String encoding = EntityUtils.getContentCharSet(response.getEntity());
encoding = encoding == null ? "UTF-8" : encoding;
InputStream stream = AndroidHttpClient.getUngzippedContent(response.getEntity());
InputStreamEntity unzEntity = new InputStreamEntity(stream,-1);
String response = EntityUtils.toString(unzEntity, encoding);
Кто-то может попробовать это. Я протестировал его и работаю правильно.
public String convertHttpResponseToString(HttpResponse res) {
InputStream is=null;
String responseString="";
try {
is=res.getEntity().getContent();
BufferedReader bufferedReader=new BufferedReader(new InputStreamReader(is));
String line="";
StringBuffer sb=new StringBuffer();
while ((line=bufferedReader.readLine())!=null)
{
sb.append(line);
}
responseString=sb.toString();
} catch (Exception e)
{
// handle Exception here...
}
return responseString;
}
если у вас есть ответ вместо HttpResponse. Таким образом вы можете получить код состояния. Благодаря
final int statusCode = response.code();