java - 将 POST 数据从 Android 应用程序发送到 PHP MySQL

标签 java android json http-post send

我正在尝试向 WampServer 发送数据。我正在使用 HttpUrlConnection,但我不知道如何发送数据——可能是 JSON 格式或 XML。我已使用内容值来保存要发送的变量值,但我不知道如何将它们发送到 PHP 脚本中的 POST 方法。

这是 PHP 代码:

<?php 

if(isset($_POST['txtname'])&&isset($_POST['txtemail']))
{
    require ('config.php');
    $con=mysqli_connect($servername,$username,$password,$db);
    $txtname=$_POST['txtname'];
    $txtemail=$_POST['txtemail'];
    mysqli_query($con,"insert into users (name,email) values('$txtname','$txtemail') ");
    echo "Inserted";
}

?>

这是 Java 代码:

package com.subhi.addtoserver;

import android.app.ProgressDialog;
import android.content.ContentValues;
import android.os.AsyncTask;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.Toast;

import java.io.IOException;
import java.io.OutputStream;
import java.net.HttpURLConnection;
import java.net.MalformedURLException;
import java.net.URL;
import java.util.ArrayList;
import java.util.List;

public class MainActivity extends AppCompatActivity {

   public EditText name,email;
    Button add;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        name=(EditText)findViewById(R.id.name);
        email=(EditText)findViewById(R.id.email);
        add=(Button)findViewById(R.id.add);
        add.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {

                InsertData task1 = new InsertData();
                String name1, email1;
                name1 = name.getText().toString();
                email1 = email.getText().toString();
                task1.execute("http://192.168.1.100/add/index.php", name1, email1);

            }
        });
    }


    private class InsertData extends AsyncTask<String,Void,Boolean>
    {
        ProgressDialog dialog=new ProgressDialog(MainActivity.this);

        @Override
        protected Boolean doInBackground(String... urls) {

            for (String url: urls)
            {

                try {                      

                    ContentValues contentValues=new ContentValues();
                    contentValues.put("txtname",urls[1]);
                    contentValues.put("txtemail",urls[2]);

                    URL url1 =new URL(urls[0]);
                    HttpURLConnection urlConnection=(HttpURLConnection)url1.openConnection();
                    urlConnection.connect();

                } catch (MalformedURLException e) {
                    Toast.makeText(getApplicationContext(),e.toString(),Toast.LENGTH_LONG).show();;
                    e.printStackTrace();
                    return  false;
                } catch (IOException e) {
                    Toast.makeText(getApplicationContext(),e.toString(),Toast.LENGTH_LONG).show();;
                    e.printStackTrace();
                    return false;
                }

            }

            return true;
        }

        @Override
        protected void onPreExecute() {

            dialog.setMessage("Sending Data....");
            dialog.show();
        }

        @Override
        protected void onPostExecute(Boolean result) {
            if(result==true)
            {

                Toast.makeText(getApplicationContext(),"Insert Success",Toast.LENGTH_LONG).show();;
            }
            else {
                Toast.makeText(getApplicationContext(),"Insert Fail",Toast.LENGTH_LONG).show();;
            }
            dialog.dismiss();
        }
    }

    @Override
    public boolean onCreateOptionsMenu(Menu menu) {
        // Inflate the menu; this adds items to the action bar if it is present.
        getMenuInflater().inflate(R.menu.menu_main, menu);
        return true;
    }

    @Override
    public boolean onOptionsItemSelected(MenuItem item) {
        // Handle action bar item clicks here. The action bar will
        // automatically handle clicks on the Home/Up button, so long
        // as you specify a parent activity in AndroidManifest.xml.
        int id = item.getItemId();

        //noinspection SimplifiableIfStatement
        if (id == R.id.action_settings) {
            return true;
        }

        return super.onOptionsItemSelected(item);
    }
}

最佳答案

这是您应该发送的方式。

echo json_encode(array("txtname"=>$txtname, "txtemail"=>'$txtemail'));

Android 中的客户端。 我希望你知道如何从 json 中获取值。

关于java - 将 POST 数据从 Android 应用程序发送到 PHP MySQL,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34445867/

相关文章:

android - 如何让我的按钮在 Fragments,ViewPager 中执行某些操作

php - 如何获取 PHP 脚本以将数据馈送到 JQuery 自动完成中?

jquery - 谷歌日历时区问题

javascript - 未处理的 JS 异常 : Requiring unknown module "9"

java - 从 tomcat 迁移到 websphere

java - 我怎样才能让我的计算器保持循环?

java - 使用 Spring MVC HandlerInterceptorAdapter 从 HttpServletResponse 记录响应正文 (HTML)

android - 如何在android drawable中绘制下面提到的圆角形状

java - 使用提供的 json 字符串创建模型

Java方法签名兼容性