【问题标题】:Send edittext values to php json webservice android将edittext值发送到php json webservice android
【发布时间】:2015-09-14 11:01:16
【问题描述】:

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

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)

【问题讨论】:

  • 能否请您也发布 logcat..
  • @Lal 请检查我编辑的帖子
  • 请将剩余的行也发布到您的 logcat 中
  • @Lal 请检查我的更新
  • MainActivity.java 中的第 114 行是什么?

标签: php android json web-services


【解决方案1】:

试试这个:

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);

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-10-15
    • 1970-01-01
    • 2011-07-03
    • 1970-01-01
    • 2023-03-10
    • 2015-09-10
    • 1970-01-01
    相关资源
    最近更新 更多