#java #android #httpclient
#java #Android #httpclient
Вопрос:
Я новичок в программировании на Android. Я пытаюсь отправить некоторые данные на сервер с помощью post. Я погуглил это и придумал это:
public void postData() {
// Create a new HttpClient and Post Header
HttpClient httpclient = new DefaultHttpClient();
HttpPost httppost = new HttpPost("http://www.yoursite.com/script.php");
try {
// Add your data
List<NameValuePair> nameValuePairs = new ArrayList<NameValuePair>(2);
nameValuePairs.add(new BasicNameValuePair("id", "12345"));
nameValuePairs.add(new BasicNameValuePair("stringdata", "AndDev is Cool!"));
httppost.setEntity(new UrlEncodedFormEntity(nameValuePairs));
// Execute HTTP Post Request
HttpResponse response = httpclient.execute(httppost);
} catch (ClientProtocolException e) {
// TODO Auto-generated catch block
} catch (IOException e) {
// TODO Auto-generated catch block
}
}
Моя проблема в том, что я получаю ошибки в первой строке этого кода:
- postData не может быть преобразован в тип
- синтаксическая ошибка в токене «{«, удалите этот токен
- синтаксическая ошибка в токене «void», @ expected
Я использую Eclipse, и я использовал Shift Ctrl o, чтобы получить весь импорт.
Комментарии:
1. вероятно, ваша ошибка заключается в строке выше этого… Вам не хватает @Override или закрывающей фигурной скобки … и т.д…
2. Не могли бы вы показать весь код?
Ответ №1:
Ваша проблема (на основе информации, которую вы предоставили до сих пор) заключается в том, что вы объявляете функцию postData
вне класса.
Функции в Java должны быть объявлены в классе. Либо вы случайно закрыли предыдущий класс из-за того, что их слишком много }
(в этом случае у вас должна быть ошибка при добавлении }
), либо вы не объявили класс.
Класс мог бы выглядеть примерно так:
public class MyPoster {
public void postData() {
// Create a new HttpClient and Post Header
HttpClient httpclient = new DefaultHttpClient();
HttpPost httppost = new HttpPost("http://www.yoursite.com/script.php");
try {
// Add your data
List<NameValuePair> nameValuePairs = new ArrayList<NameValuePair>(2);
nameValuePairs.add(new BasicNameValuePair("id", "12345"));
nameValuePairs.add(new BasicNameValuePair("stringdata", "AndDev is Cool!"));
httppost.setEntity(new UrlEncodedFormEntity(nameValuePairs));
// Execute HTTP Post Request
HttpResponse response = httpclient.execute(httppost);
} catch (ClientProtocolException e) {
// TODO Auto-generated catch block
} catch (IOException e) {
// TODO Auto-generated catch block
}
}
}
Комментарии:
1. Спасибо за вашу помощь. Я попытался поместить функцию в класс, но это все равно выдало мне ошибку. После некоторого чтения я, наконец, понял, в чем проблема. Я опубликовал только часть своего кода. Все это было в методе onCreate. Когда я перемещаю его наружу, он начал работать 🙂