2015-07-23 2 views
1

Я добавил этот метод к моему MainActivity.java Но я получаю ошибку на статике: Внутренние классы не могут иметь статические деклараторы.Как отправить HTTP-запрос в java?

protected static String excutePost(String targetURL, String urlParameters) { 
      HttpURLConnection connection = null; 
      try { 
       //Create connection 
       URL url = new URL(targetURL); 
       connection = (HttpURLConnection)url.openConnection(); 
       connection.setRequestMethod("POST"); 
       connection.setRequestProperty("Content-Type", 
         "application/x-www-form-urlencoded"); 

       connection.setRequestProperty("Content-Length", 
         Integer.toString(urlParameters.getBytes().length)); 
       connection.setRequestProperty("Content-Language", "en-US"); 

       connection.setUseCaches(false); 
       connection.setDoOutput(true); 

       //Send request 
       DataOutputStream wr = new DataOutputStream(
         connection.getOutputStream()); 
       wr.writeBytes(urlParameters); 
       wr.close(); 

       //Get Response 
       java.io.InputStream is = connection.getInputStream(); 
       BufferedReader rd = new BufferedReader(new java.io.InputStreamReader(is)); 
       StringBuilder response = new StringBuilder(); // or StringBuffer if not Java 5+ 
       String line; 
       while((line = rd.readLine()) != null) { 
        response.append(line); 
        response.append('\r'); 
       } 
       rd.close(); 
       return response.toString(); 
      } catch (Exception e) { 
       e.printStackTrace(); 
       return null; 
      } finally { 
       if(connection != null) { 
        connection.disconnect(); 
       } 
      } 
     } 

Я могу удалить статику, а затем я не получаю ошибок. Но где я могу теперь называть этот метод? Изнутри onCreate? Пробовал, но он не существует, когда я набираю excute .... в onCreate его не существует, не может его назвать.

Как использовать этот метод? И что я должен поставить как urlParameters?

+1

Вам необходимо опубликовать весь ваш код. Пока вы только показали нам один метод (который выглядит правильно с беглого взгляда). –

+0

Только совет: попробуйте использовать Модернизацию. это очень простая в использовании библиотека для HTTP-запросов. Это лучше, чем HttpURLConnection –

ответ

1

Внешний класс, который содержит «excutePost», является внутренним классом, поэтому он не может иметь статических методов в нем. Что вы можете сделать, так это переместить внешний класс в отдельный файл и сделать его нестатичным - это решит вашу проблему.

Смежные вопросы