Я разрабатываю свой первый знак, следуя этому article. Я прочитал еще пару других, но для меня это кажется простым/интуитивным, особенно когда я захочу сделать что-то большее, чем знак.Android Sign In test
Мне пришлось внести некоторые изменения в скрипт PHP, который был используемый.
ОБНОВЛЕНИЕ У меня два сценария php, это правильный, последний был для метода _GET.
<?php
$con=mysql_connect("...");//deleted for privacy
mysql_select_db("..");//deleted for privacy
if (!$con)
{
echo "Failed to connect to MySQL: " . mysql_error();
die();
}
$username = $_POST['username'];
$password = $_POST['password'];
$query=mysql_query("SELECT username FROM users");
echo $query;echo $query;echo $query;echo $query;
if($query){
$row = mysql_fetch_assoc($query);
$data = $row['username'];
echo $data;
}else{
echo "something went wrong:".mysql_error();
}
mysql_close($con);
?>
В любом случае я не думаю, что ошибка находится в PHP, как я запустить скрипт на моем браузере, используя соответствующие значения в URL для имени пользователя/пароля и выводит ответ я ищу для (это просто имя пользователя). Вот моя измененная SignInActivity.
package com.example.phpmysql;
public class LogInBackgroundActivity extends AsyncTask<String,Void,String>{
private Context context;
public AsyncResponse delegate=null;
public LogInBackgroundActivity(Context context) {
this.context=context;
}
@Override
protected String doInBackground(String... arg0) {
String address ="...";//hidden for privacy
try{
String username = (String)arg0[0];
String password = (String)arg0[1];
address+="login_post.php";
String data = URLEncoder.encode("username", "UTF-8") + "=" + URLEncoder.encode(username, "UTF-8");
data += "&" + URLEncoder.encode("password", "UTF-8") + "=" + URLEncoder.encode(password, "UTF-8");
URL url = new URL(address);
URLConnection conn = url.openConnection();
conn.setDoOutput(true);
OutputStreamWriter wr = new OutputStreamWriter(conn.getOutputStream());
wr.write(data);
wr.flush();
BufferedReader reader = new BufferedReader(new InputStreamReader(conn.getInputStream()));
StringBuilder sb = new StringBuilder();
String line = null;
// Read Server Response
while((line = reader.readLine()) != null){
sb.append(line);
break;
}
return sb.toString();
}catch(Exception e){
return new String("Exception: " + e.getMessage());
}
}
@Override
protected void onPostExecute(String result){
if(result.length()>0)
delegate.processFinished(result);
else
delegate.processFinished("Something Odd");
}
}
То, что я понял из учебника является то, что все, что печатается на PHP скрипт присылают обратно с onPostExecute(..)
. AsyncResponse - это просто интерфейс, который я создал для переноса этих данных обратно в основное действие, в соответствии с этим question.
Это данные, которые я хочу, и он возвращается пустым.
Я тестирую на реальном устройстве, поэтому у меня нет сообщений о регистрации logcat.