2016-02-05 6 views
2

У меня проблема с параметрами, переданными по URL-адресу POST. Когда в PHP я пытаюсь получить их он говорит, что $ _POST пуст:Android HttpURLConnection POST не работает

<?php 
require_once 'credentials.php'; 
$connection = mysqli_connect(MYSQL_HOST, MYSQL_USER, MYSQL_PASS, MYSQL_DATABASE); 
$query = 'INSERT INTO ratings (disco, rating) VALUES (' .mysqli_real_escape_string($connection, $_POST["disco"]). ', ' . mysqli_real_escape_string($connection, $_POST["rating"]) . ')'; 
$result = mysqli_query($connection, $query); 
echo json_encode($result); 
mysqli_close($connection); 
?> 

И мой Android код выглядит следующим образом:

@Override 
      protected String doInBackground(String... params) { 
       String response = ""; 
       try { 
        URL url = new URL(params[0]); 
        HttpURLConnection urlConnection = (HttpURLConnection)url.openConnection(); 
        urlConnection.setConnectTimeout(10000); 
        urlConnection.setReadTimeout(10000); 
        urlConnection.setDoOutput(true); 
        urlConnection.setRequestMethod("POST"); 
        urlConnection.setDoOutput(true); 
        urlConnection.setDoInput(true); 
        urlConnection.connect(); 

        List<NameValuePair> parameters = new ArrayList<NameValuePair>(); 
        parameters.add(new BasicNameValuePair("disco", params[1])); 
        parameters.add(new BasicNameValuePair("rating", params[2])); 

        OutputStream outputStream = urlConnection.getOutputStream(); 
        BufferedWriter writer = new BufferedWriter(new OutputStreamWriter(outputStream, "UTF-8")); 
        writer.write(getQuery(parameters)); 
        writer.flush(); 
        writer.close(); 
        outputStream.close(); 
        int responseCode = urlConnection.getResponseCode(); 
        if(responseCode == HttpURLConnection.HTTP_OK) { 
         String line; 
         BufferedReader br=new BufferedReader(new InputStreamReader(urlConnection.getInputStream())); 
         while((line = br.readLine()) != null) { 
          response += line; 
         } 
        } 
       } catch(Exception e) { 
        System.out.println(e.getMessage()); 
       } 
       return response; 
      } 

      private String getQuery(List<NameValuePair> params) throws UnsupportedEncodingException { 
       StringBuilder result = new StringBuilder(); 
       boolean first = true; 

       for(NameValuePair pair : params) { 
        if(first) 
         first = false; 
        else 
         result.append("&"); 

        result.append(URLEncoder.encode(pair.getName(), "UTF-8")); 
        result.append("="); 
        result.append(URLEncoder.encode(pair.getValue(), "UTF-8")); 
       } 

       return result.toString(); 
      } 

Что случилось с этим? Заранее спасибо

Редактировать: обновленный код и по-прежнему не работает.

+0

Посмотрите этот http://stackoverflow.com/questions/9767952/how-to-add-parameters-to-httpurlconnection-using-post – Rohit5k2

+0

вы LogCat печать пожалуйста .. –

+0

@ Rohit5k2 все тот же, пробовал, что до – Xabi

ответ

0
"&disco=" 

сделать что:

"disco=" 
+0

Это то же самое, даже используя ссылку, предоставленную Rohit5k2, она просто говорит, что $ _POST - пустой массив, если я отправляю его как php-ответ с помощью echo json_encode ($ _ POST); – Xabi

+0

Вы можете улучшить свой PHP-код, предварительно проверив правильность входящих сообщений. Используйте isset(). Эхо соответствующие сообщения, если нет. Если все в порядке, то следует код базы данных. То, как вы должны кодировать. – greenapps

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