#java #android #httpclient
#java #Android #httpclient
Вопрос:
Мне нужно разработать вспомогательный класс поверх org.apache.httpclient для моего приложения Android. Следующий код отлично работает для Android, но не для JavaSE 1.6 на моем ПК.
Вопрос: могу ли я использовать org.apache.httpclient как для Android, так и для ПК? Если я не могу: что посоветует ваша клиентская библиотека http? Я хочу разработать один вспомогательный класс и использовать его вообще.
Вот код, который отлично работает в Android, но некоторые классы не могут быть разрешены для Java SE 1.6.
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import org.apache.http.HttpEntity;
import org.apache.http.HttpResponse;
import org.apache.http.client.HttpClient;
import org.apache.http.client.methods.HttpGet;
import org.apache.http.impl.client.DefaultHttpClient;
public class HTTPClient {
public static void connect(String url)
{
HttpClient httpclient = new DefaultHttpClient();
// Prepare a request object
HttpGet httpget = new HttpGet(url);
// Execute the request
HttpResponse response;
try {
response = httpclient.execute(httpget);
// Examine the response status
// Get hold of the response entity
HttpEntity entity = response.getEntity();
// If the response does not enclose an entity, there is no need
// to worry about connection release
if (entity != null) {
// A Simple JSON Response Read
InputStream instream = entity.getContent();
String result= convertStreamToString(instream);
// now you have the string representation of the HTML request
instream.close();
}
} catch (Exception e) {}
}
private static String convertStreamToString(InputStream is) {
/*
* To convert the InputStream to String we use the BufferedReader.readLine()
* method. We iterate until the BufferedReader return null which means
* there's no more data to read. Each line will appended to a StringBuilder
* and returned as String.
*/
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();
}
}
Комментарии:
1. Добавьте ошибку / исключение к вашему вопросу.
Ответ №1:
Да, вы можете, вам не следует называть свой вспомогательный класс клиента тем же, что и уже определенный класс. Хотя Java чувствительна к регистру, это сбивает вас с толку, когда вы меньше всего этого ожидаете. Это может быть даже причиной возникновения этой проблемы. Почему бы не назвать это HttpClientHelper, поскольку это то, что есть на самом деле.
Вот пример HttpClient http://hc.apache.org/httpclient-3.x/tutorial.html