#java #android #eclipse
#java #Android #eclipse
Вопрос:
следующий код, который я создал, следуя руководству по веб-сервисам, но ничего не происходит, хотя ошибка не выдается. Кто-нибудь может мне помочь, пожалуйста? поскольку я не могу продолжить. Мне нужно подключиться к веб-службе, и это не работает.
Используя отладчик, я обнаружил, что он останавливается в первом методе в этой конкретной строке: HttpResponse response = client.execute(запрос);
private String result = "";
public void getResponse()
{
HttpClient client = new DefaultHttpClient();
String query ="working url";
try
{
URL url = new URL(query);
URI uri = new URI(url.getProtocol(), url.getHost(),url.getPath(), url.getQuery(),null);
HttpGet request = new HttpGet(uri);
HttpResponse response = client.execute(request);
result=Userrequest(response);
}
catch(Exception ex)
{
}
}
public String Userrequest(HttpResponse response)
{
try
{
InputStream in = response.getEntity().getContent();
BufferedReader reader = new BufferedReader(new InputStreamReader(in));
StringBuilder str = new StringBuilder();
String line = null;
while((line = reader.readLine()) != null)
{
str.append(line "n");
}
in.close();
result = str.toString();
updateData(result);
}
catch(Exception ex)
{
//responsetxt.setText(ex.getMessage());
}
return resu<
}
public void updateData(String result)
{
try
{
JSONObject json = new JSONObject(result);
JSONArray ja;
json = json.getJSONObject("responseData");
ja = json.getJSONArray("results");
int resultCount = ja.length();
for (int i =0; i<resultCount; i )
{
JSONObject resultObject = ja.getJSONObject(i);
result = resultObject.toString();
}
}
catch(Exception ex)
{
//responsetxt.setText(ex.getMessage());
}
}
Комментарии:
1. Добавили ли вы разрешение на доступ в Интернет в AndroidManifest.xml ? Можете ли вы опубликовать свой LogCat?
2. Большое вам спасибо за ваш ответ. Нет, я ничего не добавлял в свой манифест. Любая помощь будет высоко оценена.
3.
String result = EntityUtils.toString(response);
упрощает то, что вы написали (чтение данных из буфера ответов и создание строки).
Ответ №1:
Добавьте строку
<uses-permission android:name="android.permission.INTERNET"></uses-permission>
В вашем AndroidManifest.xml , после строки
<uses-sdk android:minSdkVersion="#" />
Где #
вы представляете minSdkVersion
РЕДАКТИРОВАТЬ: попробуйте изменить это:
URL url = new URL(query);
URI uri = new URI(url.getProtocol(), url.getHost(),url.getPath(), url.getQuery(),null);
HttpGet request = new HttpGet(uri);
с помощью этого:
URI uri = new URI(query);
HttpGet request = new HttpGet();
request.setUri(uri);
Комментарии:
1. Я добавил это, но все равно ничего не происходит. 🙁 <использует-sdk android:minSdkVersion=»14″ /> ИНТЕРНЕТ»/>
2. В журнале ошибок у меня есть необработанное исключение цикла событий, ошибка Ср. 02 ноября 09:59:14 CET 2011 Необработанное исключение цикла событий org.eclipse.swt.SWTException: не удалось выполнить runnable (java.lang. Исключение NullPointerException) в org.eclipse.swt.SWT.error(SWT.java: 4282) в org.eclipse.swt.SWT.error(SWT.java: 4197) в org.eclipse.swt.widgets. Synchronizer.runAsyncMessages(Synchronizer.java: 138) в org.eclipse.swt.widgets. Display.runAsyncMessages(Display.java:4140) в org.eclipse.swt.widgets. Display.readAndDispatch(Display.java:3757) в org.eclipse.ui.internal. Workbench.runEventLoop(Workbenc …..
3. Используя отладчик, я обнаружил, что он останавливается в первом методе в этой конкретной строке: HttpResponse response = client.execute(запрос);
4. Смотрите Часть РЕДАКТИРОВАНИЯ в моем ответе