Send edittext values to php json webservice android


Send edittext values to php json webservice android

我有四个编辑文本和按钮和php json webservice在我的应用程序。我试图将这些编辑文本值发送到php页面使用json。如果值到达php页面,它将返回success=1,否则它返回success=2,但当我点击提交按钮应用程序强制关闭。这是我的代码:

protected void onCreate(Bundle savedInstanceState) {
                super.onCreate(savedInstanceState);
                setContentView(R.layout.activity_main);
mhost=(EditText) findViewById(R.id.field_host);
        mdb=(EditText) findViewById(R.id.field_db);
        muser=(EditText) findViewById(R.id.field_user);
        mpassword=(EditText) findViewById(R.id.field_password);
        mConnection=(Button) findViewById(R.id.insert);
        mConnection.setOnClickListener(new OnClickListener() {
                    @Override
                    public void onClick(View v) {
                        // TODO Auto-generated method stub
                        new Connect().execute();
                    }
                });
        } 
    class Connect extends AsyncTask<String, String, String>{
            @Override
            protected String doInBackground(String... args) {
                // TODO Auto-generated method stub
                String HOST=mhost.getText().toString();
                String USER=muser.getText().toString();
                String DB=mdb.getText().toString();
                String PASSWORD=mpassword.getText().toString();
                List<NameValuePair> params=new ArrayList<NameValuePair>();
                params.add(new BasicNameValuePair("nfc_tag", HOST));
                params.add(new BasicNameValuePair("meter_reading", USER));
                params.add(new BasicNameValuePair("reading_datetime", DB));
                params.add(new BasicNameValuePair("image_name", PASSWORD));

                JSONObject json=jp.makeHttpRequest(connection_url, "POST", params);
                try {
                    int success=json.getInt(Tag_success);
                    if(success==1){
                        Toast.makeText(getApplicationContext(), "Connected :-)", Toast.LENGTH_LONG);
                    }else{
                        Toast.makeText(getApplicationContext(), "Not Connected :(", Toast.LENGTH_LONG);
                    }
                } catch (JSONException e) {
                    // TODO: handle exception
                    e.printStackTrace();
                }
                return null;
            }
        }
Json解析器

public class JsonParser {
    static InputStream IS=null;
    static JSONObject JB=null;
    static String json="";
    public JsonParser(){

    }
    public JSONObject makeHttpRequest(String url,String method,List<NameValuePair> params){
        try {
            if(method=="POST"){
                DefaultHttpClient httpClient=new DefaultHttpClient();
                HttpPost httpPost=new HttpPost(url);
                httpPost.setEntity(new UrlEncodedFormEntity(params));
            }else if(method=="GET"){
                 DefaultHttpClient httpClient=new DefaultHttpClient();
                 String paramaString =URLEncodedUtils.format(params, "utf-8");
                 url +="?"+paramaString;
                 HttpGet httpGet=new HttpGet(url);
                 HttpResponse httpresponse=httpClient.execute(httpGet);
                 HttpEntity httpEntity=httpresponse.getEntity();
                 IS=httpEntity.getContent();
            }
        } catch (UnsupportedEncodingException e) {
            e.printStackTrace();
        }catch (ClientProtocolException e) {
            // TODO: handle exception
        }catch (IOException e) {
            // TODO: handle exception
            e.printStackTrace();
        }
        try {
            BufferedReader reader=new BufferedReader(new InputStreamReader(IS,"iso-8859"),8);
            StringBuilder sb=new StringBuilder();
            String line=null;
            while((line=reader.readLine())!=null){
                sb.append(line+"'n");
            }
            IS.close();
            json=sb.toString();
        } catch (Exception e) {
            // TODO: handle exception
            Log.e("Buffer Error","Connection Error"+e.toString());
        }
        try {
            JB=new JSONObject(json);
        } catch (JSONException e) {
            // TODO: handle exception
            Log.e("JSON Parser", e.toString());
        }
        return JB;
    }
PHP脚本

<?php
include('connection.php');
$host=$_POST['nfc_tag'];
$user=$_POST['meter_reading'];
$db=$_POST['reading_datetime'];
$password=$_POST['image_name'];
$response=array();

if($host){
$response['success']=1;
}else{
$response['success']=2;
}
echo json_encode($response);
?>

LogCat

09-14 15:58:40.823: E/Buffer Error(11735): Connection Errorjava.lang.NullPointerException: lock == null
09-14 15:58:40.833: E/JSON Parser(11735): org.json.JSONException: End of input at character 0 of 
09-14 15:58:40.833: E/AndroidRuntime(11735): Exception
09-14 15:58:40.833: E/AndroidRuntime(11735): FATAL EXCEPTION: AsyncTask #1
09-14 15:58:40.833: E/AndroidRuntime(11735): Process: com.example.test_webservice, PID: 11735
09-14 15:58:40.833: E/AndroidRuntime(11735): java.lang.RuntimeException: An error occured while executing doInBackground()
09-14 15:58:40.833: E/AndroidRuntime(11735):    at android.os.AsyncTask$3.done(AsyncTask.java:300)
09-14 15:58:40.833: E/AndroidRuntime(11735):    at java.util.concurrent.FutureTask.finishCompletion(FutureTask.java:355)
09-14 15:58:40.833: E/AndroidRuntime(11735):    at java.util.concurrent.FutureTask.setException(FutureTask.java:222)
09-14 15:58:40.833: E/AndroidRuntime(11735):    at java.util.concurrent.FutureTask.run(FutureTask.java:242)
09-14 15:58:40.833: E/AndroidRuntime(11735):    at android.os.AsyncTask$SerialExecutor$1.run(AsyncTask.java:231)
09-14 15:58:40.833: E/AndroidRuntime(11735):    at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1112)
09-14 15:58:40.833: E/AndroidRuntime(11735):    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:587)
09-14 15:58:40.833: E/AndroidRuntime(11735):    at java.lang.Thread.run(Thread.java:841)
09-14 15:58:40.833: E/AndroidRuntime(11735): Caused by: java.lang.NullPointerException
09-14 15:58:40.833: E/AndroidRuntime(11735):    at com.example.test_webservice.MainActivity$Connect.doInBackground(MainActivity.java:114)
09-14 15:58:40.833: E/AndroidRuntime(11735):    at com.example.test_webservice.MainActivity$Connect.doInBackground(MainActivity.java:1)
09-14 15:58:40.833: E/AndroidRuntime(11735):    at android.os.AsyncTask$2.call(AsyncTask.java:288)
09-14 15:58:40.833: E/AndroidRuntime(11735):    at java.util.concurrent.FutureTask.run(FutureTask.java:237)

试试这个:

include('connection.php');
$host=$_POST['nfc_tag'];
$user=$_POST['meter_reading'];
$db=$_POST['reading_datetime'];
$password=$_POST['image_name'];
$response=array();
if($host != NULL){
$response['success']=1;
}else{
$response['success']=2;
}
echo json_encode($response);