postData не может быть преобразован в тип

#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. Когда я перемещаю его наружу, он начал работать 🙂