如何将输入信息从android studio发送到本地数据库
How sent input information to Localdatabase from androidstodio
我是 Android 的初学者,我正在尝试一个例子,从编辑文本中获取一些信息并将其发送到我的本地主机,如果我的本地数据库
isset 所以回显了一些东西,但无论我做了什么,它都不起作用,当我用调试器检查它时,OutputStreamWriter 在 Android Studio 中工作,但没有发送到我的本地数据库。
下面分享我的代码。错误是 $_POST["email"] 不起作用,错误是电子邮件未定义?!
//It's my MainActivity's codes
public class MainActivity extends AppCompatActivity {
Button show;
TextView txt;
EditText edt;
public static Context context;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
context=MainActivity.this;
edt=(EditText)findViewById(R.id.edt);
show=(Button)findViewById(R.id.show);
txt=(TextView)findViewById(R.id.txt);
show.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
new AsynctaskTest("http://152.144.1.215/sadegh",edt.getText().toString()).execute();
}
});
}
}
这是我的 AsynctaskGetData 代码:
public class AsynctaskTest extends AsyncTask<String,Integer,String>{
public String link="";
public String email="";
public StringBuilder builder;
ProgressDialog progressDialog;
public AsynctaskTest(String link,String email){
this.link=link;
this.email=email;
}
@Override
protected void onPreExecute() {
super.onPreExecute();
progressDialog=new ProgressDialog(MainActivity.context);
progressDialog.setTitle("Processing...");
progressDialog.setMessage("Please Wait...");
progressDialog.show();
}
@Override
protected String doInBackground(String... strings) {
try {
String data=URLEncoder.encode("email","UTF-8")+"="+URLEncoder.encode(email,"UTF-8");
URL url=new URL(link);
URLConnection connection=url.openConnection();
connection.setDoOutput(true);
OutputStreamWriter writer=new OutputStreamWriter(connection.getOutputStream());
writer.write(data);
writer.flush();
BufferedReader reader=new BufferedReader(new InputStreamReader(connection.getInputStream()));
builder=new StringBuilder();
String line=null;
while ((line=reader.readLine())!=null){
builder.append(line);
}
} catch (MalformedURLException e) {
e.printStackTrace();
} catch (UnsupportedEncodingException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
return builder.toString();
}
@Override
protected void onPostExecute(String s) {
super.onPostExecute(s);
progressDialog.dismiss();
Toast.makeText(MainActivity.context, s, Toast.LENGTH_SHORT).show();
}
@Override
protected void onProgressUpdate(Integer... values) {
super.onProgressUpdate(values);
}
}
这是我的 php 代码
<?php
$email=$_POST["email"];
echo "hello"
?>
哇,我真的很高兴找到这个问题的原因,因为没有从 android studio 发送到我的本地数据库
这个问题是因为 MainActivity 中的这段代码:
new AsynctaskTest("http://152.144.1.215/sadegh",edt.getText().toString()).execute();
我们应该在 /sadegh 之后键入我们要向其发送信息的页面,如下所示:
new AsynctaskTest("http://152.144.1.215/sadegh/index.php",edt.getText().toString()).execute();
我希望我的这个问题和这个答案能帮助到其他人。
祝大家好运。
我是 Android 的初学者,我正在尝试一个例子,从编辑文本中获取一些信息并将其发送到我的本地主机,如果我的本地数据库 isset 所以回显了一些东西,但无论我做了什么,它都不起作用,当我用调试器检查它时,OutputStreamWriter 在 Android Studio 中工作,但没有发送到我的本地数据库。
下面分享我的代码。错误是 $_POST["email"] 不起作用,错误是电子邮件未定义?!
//It's my MainActivity's codes
public class MainActivity extends AppCompatActivity {
Button show;
TextView txt;
EditText edt;
public static Context context;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
context=MainActivity.this;
edt=(EditText)findViewById(R.id.edt);
show=(Button)findViewById(R.id.show);
txt=(TextView)findViewById(R.id.txt);
show.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
new AsynctaskTest("http://152.144.1.215/sadegh",edt.getText().toString()).execute();
}
});
}
}
这是我的 AsynctaskGetData 代码:
public class AsynctaskTest extends AsyncTask<String,Integer,String>{
public String link="";
public String email="";
public StringBuilder builder;
ProgressDialog progressDialog;
public AsynctaskTest(String link,String email){
this.link=link;
this.email=email;
}
@Override
protected void onPreExecute() {
super.onPreExecute();
progressDialog=new ProgressDialog(MainActivity.context);
progressDialog.setTitle("Processing...");
progressDialog.setMessage("Please Wait...");
progressDialog.show();
}
@Override
protected String doInBackground(String... strings) {
try {
String data=URLEncoder.encode("email","UTF-8")+"="+URLEncoder.encode(email,"UTF-8");
URL url=new URL(link);
URLConnection connection=url.openConnection();
connection.setDoOutput(true);
OutputStreamWriter writer=new OutputStreamWriter(connection.getOutputStream());
writer.write(data);
writer.flush();
BufferedReader reader=new BufferedReader(new InputStreamReader(connection.getInputStream()));
builder=new StringBuilder();
String line=null;
while ((line=reader.readLine())!=null){
builder.append(line);
}
} catch (MalformedURLException e) {
e.printStackTrace();
} catch (UnsupportedEncodingException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
return builder.toString();
}
@Override
protected void onPostExecute(String s) {
super.onPostExecute(s);
progressDialog.dismiss();
Toast.makeText(MainActivity.context, s, Toast.LENGTH_SHORT).show();
}
@Override
protected void onProgressUpdate(Integer... values) {
super.onProgressUpdate(values);
}
}
这是我的 php 代码
<?php
$email=$_POST["email"];
echo "hello"
?>
哇,我真的很高兴找到这个问题的原因,因为没有从 android studio 发送到我的本地数据库 这个问题是因为 MainActivity 中的这段代码:
new AsynctaskTest("http://152.144.1.215/sadegh",edt.getText().toString()).execute();
我们应该在 /sadegh 之后键入我们要向其发送信息的页面,如下所示:
new AsynctaskTest("http://152.144.1.215/sadegh/index.php",edt.getText().toString()).execute();
我希望我的这个问题和这个答案能帮助到其他人。
祝大家好运。