Я хочу отправить данные с android на php.Am с помощью android api 23 и с сайта разработчиков Android, который должен знать, что имяпамятная стоимость устарела от api 22 и выше. Я упомянул одно из сообщений здесь в stackoverflow и получил код ниже. но все же это не сработает.
Моя проблема в том, что я отправляю значение (ID) в php-код и на основе этого значения извлекает записи из базы данных. Теперь, если я получаю данные без использования этого значения, он отлично работает, но я не могу отправить значение id в php-код.
Я не могу найти что-то не так в этом коде или может быть моей ошибкой – редактирование кода. Было бы здорово, если бы кто-то помог мне понять это ясно.
Заранее спасибо.
Вот фрагмент кода, который я пробовал.
Код Android:
String sid = staffid.toString(); // this sid is passed as intent from another activity and passing it to below link. Log.d("SID :", "" + sid); try { URL url = null; url = new URL("http://usplhubli.96.lt/hrm/hrm_app/individual_view_staff.php"); Log.d("url to display :", "" + url.toString()); HttpURLConnection conn = null; conn = (HttpURLConnection) url.openConnection(); conn.setReadTimeout(CONNECTION_TIMEOUT); conn.setConnectTimeout(CONNECTION_TIMEOUT); conn.setRequestMethod("POST"); conn.setDoInput(true); conn.setDoOutput(true); DataOutputStream os = new DataOutputStream(conn.getOutputStream()); // Log.d("os to display :", "" + os.toString()); Uri.Builder builder = new Uri.Builder().appendQueryParameter("sid", sid); Log.d("builder to display :", "" + builder.toString()); String query = builder.build().getEncodedQuery(); BufferedWriter writer = new BufferedWriter(new OutputStreamWriter(os, "UTF-8")); Log.d("writer display :", "" + writer.toString()); writer.write(query); writer.flush(); writer.close(); os.close(); } catch (MalformedURLException e1) { e1.printStackTrace(); } catch (ProtocolException e2) { e2.printStackTrace(); } catch (IOException e3) { e3.printStackTrace(); } return null; }
У меня есть этот код в doInBackground (String … params) AsyncTask на основе этого значения sid. Мне нужно получить данные из базы данных и отобразить их в активности Android.
Вот код PHP, который я пробовал
Код PHP:
$response=array(); $sid=$_POST["sid"]; // this is the POST data that am send from android //$sid="4"; // this is the static value that i have tried and its working print_r($sid); include 'dbconfig.php'; $imagePath='http://www.usplhubli.96.lt/hrm'; $query=mysqli_query($conn,"select * from hrm_staff where sid='$sid'"); if(mysqli_num_rows($query) >0) { $response["hrm_staff"] = array(); while ($row = mysqli_fetch_array($query)) { $recp = array(); $recp["sid"]=$row["sid"]; $fullName=$row['fname']."".$row['mname']."".$row['lname']; $recp["name"]= $fullName; $recp["address"]=$row['address']; $recp['city']=$row['city']; $recp["design"]=$row['did']; $recp["contact"]=$row['mobile']; $recp["email"]=$row['email']; $recp['qualification']=$row['quali']; $recp["dateofjoining"]=$row['doj']; $ppic1=$row['ppic']; $ppic1; $ppic21=$imagePath."/".trim($ppic1); $recp["ppic"]= $ppic21; array_push($response["hrm_staff"], $recp); } $response["success"] = 1; $response["message"]="display records"; echo json_encode($response); } else { $response["success"] = 0; $response["message"] = "No products found"; echo json_encode($response); }
Пожалуйста, предложите. Спасибо.
используйте эти строки кода для использования HttpURLConnection
Для отправки параметра запроса: –
Uri.Builder builder = new Uri.Builder() .appendQueryParameter("phone", number) .appendQueryParameter("password", password) .appendQueryParameter("device_login",value);
И для получения параметра request в методе postUnl можно указать следующее:
URL url = new URL(myurl); HttpURLConnection urlConnection = (HttpURLConnection) url.openConnection(); urlConnection.setReadTimeout(30000); urlConnection.setConnectTimeout(30000); ; String query = builder.build().getEncodedQuery(); System.out.println("REQUEST PARAMETERS ARE===" + query); urlConnection.setRequestMethod("POST"); urlConnection.setDoInput(true); urlConnection.setDoOutput(true); urlConnection.connect(); //Send request DataOutputStream wr = new DataOutputStream ( urlConnection.getOutputStream ()); wr.writeBytes (query); wr.flush (); wr.close (); //Get Response InputStream isNew = urlConnection.getInputStream(); BufferedReader rd = new BufferedReader(new InputStreamReader(isNew)); String line; response = new StringBuffer(); while((line = rd.readLine()) != null) { response.append(line); } rd.close(); System.out.println("Final response===="+response);
Там может быть более одной проблемы, но большой – вы никогда не отправляете запрос, все, что вы делаете, это создание запроса и настройка параметров
вам нужно сделать
conn.connect();
или
conn.getInputStream();
или любое количество вещей, которые вы можете сделать, чтобы отправить запрос и получить требуемую информацию
ПОСЛЕ того, как вы напишете свои параметры