Я пытаюсь разработать приложение для Android, которое вызывает php-файл для запроса и извлечения данных из базы данных. URL-адрес доступен на моем мобильном телефоне в веб-браузере, но я не могу назвать это из моего java-кода ниже. Может ли кто-нибудь помочь мне в вызове моего PHP-файла из моего кода Java.
URL url = new URL("http://10.0.3.2/MYCODE/app/login.php"); String urlParams = "name="+name+"&password="+password; HttpURLConnection httpURLConnection = (HttpURLConnection) url.openConnection(); httpURLConnection.setDoOutput(true); OutputStream os = httpURLConnection.getOutputStream(); os.write(urlParams.getBytes()); os.flush(); os.close(); InputStream is = httpURLConnection.getInputStream(); while((tmp=is.read())!=-1){ data+= (char)tmp; } is.close(); httpURLConnection.disconnect();
Я получаю следующую ошибку: java.io.FileNotFoundException:
Я использую метод POST
потому что он более безопасен.
Если это метод GET, мы можем использовать приведенные ниже строки кода, и проблема с вашим вызывающим файлом может быть неправильным файлом .php.
//Integrating url with values [Starts] Map<String, String> request = new HashMap<String, String>(); request.put("name", name); request.put("password", password); Uri.Builder uriBuilder = new Uri.Builder(); uriBuilder.encodedPath("http://10.0.3.2/MYCODE/app/login.php"); if (mapOfStrings != null) { for (Map.Entry<String, String> entry : request.entrySet()) { Log.d("buildSanitizedRequest", "key: " + entry.getKey() + " value: " + entry.getValue()); uriBuilder.appendQueryParameter(entry.getKey(), entry.getValue()); } } String uriString; try { uriString = uriBuilder.build().toString(); // May throw an // UnsupportedOperationException } catch (Exception e) { Log.e("Exception", "Exception" + e); } //Integrating url with values [Ends] HttpURLConnection connection = null; try { URL url = new URLuriBuilder.build().toString()); connection = (HttpURLConnection) url.openConnection(); connection.setRequestProperty("Content-Type", "application/json"); connection.setRequestProperty("Accept", "application/json"); connection.setRequestProperty("Accept-Charset", "utf-8,*"); Log.d("Get-Request", url.toString()); try { BufferedReader bufferedReader = new BufferedReader( new InputStreamReader(connection.getInputStream())); StringBuilder stringBuilder = new StringBuilder(); String line; while ((line = bufferedReader.readLine()) != null) { stringBuilder.append(line).append("\n"); } bufferedReader.close(); Log.d("Get-Response", stringBuilder.toString()); return new JSONObject(stringBuilder.toString()); } finally { connection.disconnect(); } } catch (Exception e) { Log.e("ERROR", e.getMessage(), e); return null; }`
Убедитесь, что следующие две строки в манифесте и WIFI включены и подключены к подсети 10.0.3.x
<uses-permission android:name="android.permission.INTERNET" /> <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
Если метод post получен, где «?» в вашем URL-адресе?
вы можете использовать в этом методе URL url = new URL("http://localhost/test.php?print=success"); URLConnection connection = url.openConnection(); connection.connect();
URL url = new URL("http://localhost/test.php?print=success"); URLConnection connection = url.openConnection(); connection.connect();
то же, что у меня есть для одного из моих проектов этот cluesshop.com