Php 将Android应用程序与远程服务器上的数据库连接
我正在尝试访问远程服务器上的数据库。数据库很好,因为它可以与php代码配合使用,但当我尝试使用android应用程序在该数据库中添加数据时,数据不会插入数据库。 为此,我基本上遵循了以下教程 应用程序中有以下2项活动Php 将Android应用程序与远程服务器上的数据库连接,php,android,database,cloud,Php,Android,Database,Cloud,我正在尝试访问远程服务器上的数据库。数据库很好,因为它可以与php代码配合使用,但当我尝试使用android应用程序在该数据库中添加数据时,数据不会插入数据库。 为此,我基本上遵循了以下教程 应用程序中有以下2项活动 主要活动(启动器活动) 包含一个“添加联系人”按钮,单击该按钮,将打开“添加信息”活动 包含3个编辑文本和一个“保存数据”按钮,单击该按钮可调用“保存信息”方法 公共类AddInfo扩展活动{ EditText editTextName, editTextEmail, edit
包含一个“添加联系人”按钮,单击该按钮,将打开“添加信息”活动
包含3个编辑文本和一个“保存数据”按钮,单击该按钮可调用“保存信息”方法
EditText editTextName, editTextEmail, editTextMobile;
String strName, strEmail, strMobile;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.add_info_layout);
editTextName = (EditText)findViewById(R.id.editTextName);
editTextEmail = (EditText)findViewById(R.id.editTextEmail);
editTextMobile = (EditText)findViewById(R.id.editTextMobile);
}
public void saveInfo (View view)
{
strName = editTextName.getText().toString();
strEmail = editTextEmail.getText().toString();
strMobile = editTextMobile.getText().toString();
BackgroundTask backgroundTask = new BackgroundTask();
backgroundTask.execute(strName, strEmail, strMobile);
finish();
}
class BackgroundTask extends AsyncTask<String,Void,String>
{
String add_info_url;
@Override
protected void onPreExecute() {
add_info_url = "sisuol.move.pk/add_info.php";
}
@Override
protected String doInBackground(String... params) {
String name, email, mobile;
name = params[0];
email = params[1];
mobile = params[2];
try
{
URL url = new URL(add_info_url);
HttpURLConnection httpURLConnection = (HttpURLConnection) url.openConnection();
httpURLConnection.setRequestMethod("POST");
httpURLConnection.setDoOutput(true);
OutputStream outputStream = httpURLConnection.getOutputStream();
BufferedWriter bufferedWriter = new BufferedWriter(new OutputStreamWriter(outputStream, "UTF-8"));
String data_string = URLEncoder.encode("name","UTF-8")+"="+URLEncoder.encode(name, "UTF-8")+"&"+
URLEncoder.encode("email","UTF-8")+"="+URLEncoder.encode(email, "UTF-8")+"&"+
URLEncoder.encode("mobile","UTF-8")+"="+URLEncoder.encode(mobile, "UTF-8");
bufferedWriter.write(data_string);
bufferedWriter.flush();
bufferedWriter.close();
outputStream.close();
InputStream inputStream = httpURLConnection.getInputStream();
inputStream.close();
httpURLConnection.disconnect();
return "One row of data inserted!";
}
catch (MalformedURLException e)
{
e.printStackTrace();
}
catch (IOException e)
{
e.printStackTrace();
}
return null;
}
@Override
protected void onProgressUpdate(Void... values) {
super.onProgressUpdate(values);
}
@Override
protected void onPostExecute(String result) {
Toast.makeText(getApplicationContext(), result, Toast.LENGTH_LONG).show();
}
}
EditText-editTextName、editTextEmail、editTextMobile;
字符串strName、strEmail、strMobile;
@凌驾
创建时受保护的void(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.add_info_layout);
editTextName=(EditText)findViewById(R.id.editTextName);
editTextEmail=(EditText)findViewById(R.id.editTextEmail);
editTextMobile=(EditText)findViewById(R.id.editTextMobile);
}
公共void saveInfo(视图)
{
strName=editTextName.getText().toString();
strEmail=editTextEmail.getText().toString();
strMobile=editTextMobile.getText().toString();
BackgroundTask BackgroundTask=新的BackgroundTask();
执行(strName、strEmail、strMobile);
完成();
}
类BackgroundTask扩展了AsyncTask
{
字符串add\u info\u url;
@凌驾
受保护的void onPreExecute(){
add_info_url=“sisuol.move.pk/add_info.php”;
}
@凌驾
受保护的字符串doInBackground(字符串…参数){
字符串名称、电子邮件、手机;
name=params[0];
email=params[1];
mobile=params[2];
尝试
{
URL URL=新URL(添加信息URL);
HttpURLConnection HttpURLConnection=(HttpURLConnection)url.openConnection();
httpURLConnection.setRequestMethod(“POST”);
httpURLConnection.setDoOutput(true);
OutputStream OutputStream=httpURLConnection.getOutputStream();
BufferedWriter BufferedWriter=新的BufferedWriter(新的OutputStreamWriter(outputStream,UTF-8));
字符串数据\u String=URLEncoder.encode(“名称”、“UTF-8”)+“=”+URLEncoder.encode(名称,“UTF-8”)+“&”+
URLEncoder.encode(“电子邮件”,“UTF-8”)+”=“+URLEncoder.encode(电子邮件,“UTF-8”)+”&”+
urlcoder.encode(“移动”,“UTF-8”)+“=”+urlcoder.encode(移动,“UTF-8”);
bufferedWriter.write(数据字符串);
bufferedWriter.flush();
bufferedWriter.close();
outputStream.close();
InputStream InputStream=httpURLConnection.getInputStream();
inputStream.close();
httpURLConnection.disconnect();
返回“插入一行数据!”;
}
捕获(格式错误)
{
e、 printStackTrace();
}
捕获(IOE异常)
{
e、 printStackTrace();
}
返回null;
}
@凌驾
受保护的void onProgressUpdate(void…值){
super.onProgressUpdate(值);
}
@凌驾
受保护的void onPostExecute(字符串结果){
Toast.makeText(getApplicationContext(),result,Toast.LENGTH_LONG.show();
}
}
}可能会出现POST问题。
你可以使用截击库
添加到渐变中
dependencies {
compile 'com.mcxiaoke.volley:library:1.0.19'
}
为post添加JAVA代码
RequestQueue queue = Volley.newRequestQueue(this);
StringRequest request = new StringRequest(Request.Method.POST, "Your URL",
new Response.Listener<String>() {
@Override
public void onResponse(String response) {
// Do something
}
}, new Response.ErrorListener() {
@Override
public void onErrorResponse(VolleyError error) {
progressDialog.dismiss();
onLoginFailed();
}
}){
@Override
protected Map<String,String> getParams(){
Map<String,String> params = new HashMap<String, String>();
// Add your Params Here.
//params.put("email", email);
//params.put("password",password);
return params;
}
};
queue.add(request);
RequestQueue queue=Volley.newRequestQueue(this);
StringRequest=新建StringRequest(request.Method.POST,“您的URL”,
新的Response.Listener(){
@凌驾
公共void onResponse(字符串响应){
//做点什么
}
},new Response.ErrorListener(){
@凌驾
公共无效onErrorResponse(截击错误){
progressDialog.disclose();
onLoginFailed();
}
}){
@凌驾
受保护的映射getParams(){
Map params=新的HashMap();
//在这里添加您的参数。
//参数put(“电子邮件”,电子邮件);
//参数put(“密码”,密码);
返回参数;
}
};
添加(请求);
我看过你提到的视频,考虑到服务器端的PHP代码可以正常工作,我的最佳猜测是客户端应用程序无法进行必要的通信。因此,要么通信根本没有发生,要么没有正确发送参数。若存在任何类型的请求以确保至少成功地进行通信,那个么在数据库中转储虚拟数据应该会更容易。但更可靠的方法是在客户端检查您的网络流量
现在,有几种解决方案可以调试应用程序并检查http流量。最新的一个是由Facebook开发的开源调试平台,它为Android开发者提供了丰富且高度互动的调试体验。但这需要你们在客户端做一些必要的改变,若你们感兴趣的话,这会对你们有所帮助
否则,若你们想节省时间和精力,那个么我建议你们使用这个工具,这个和这些基本的应该是非常有用的。Charles基本上是一个web代理(HTTP代理/HTTP监视器),您将在计算机上安装它,它将能够为您记录和显示发送和接收的所有数据。从本质上讲,这将使您能够轻松查看web浏览器/客户端和服务器之间的请求、响应和HTTP头(其中包含cookie和缓存信息)。它最终可以帮助您跟踪问题并解决它
希望有帮助 我将根据你的意见行事