2014-02-13 118 views
0

我是android开发新手。我需要解析这个代码到php数据库。我可以从logcat获得响应。我只需要解析这个网站数据库masterlist。有人可以帮助我与这些请。非常感谢。在Android中解析JSON响应

public class MainActivity extends Activity implements OnClickListener { 

private EditText inputCompanyID; 
private EditText inputBranchID; 
private EditText inputFName; 
private EditText inputLName; 
private EditText inputGenderID; 
private EditText inputBirthdate; 
private EditText inputEmail; 
private EditText inputMobile; 
private EditText inputItemID; 
private EditText inputVoucherID; 

private Button btnCreateProduct;  
private ProgressDialog pDialog; 


JSONParser jsonParser = new JSONParser(); 


// JSON Node names 
private static final String TAG_SUCCESS = "success"; 
private static final String TAG_MESSAGE = "message"; 

protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_main); 

// new MyAsyncTask().execute(); 


inputCompanyID = (EditText) findViewById(R.id.inputCompanyID); 
inputBranchID = (EditText) findViewById(R.id.inputBranchID); 
inputLName = (EditText) findViewById(R.id.inputLName); 
inputFName = (EditText) findViewById(R.id.inputFName); 
inputGenderID = (EditText) findViewById(R.id.inputGenderID); 
inputBirthdate = (EditText) findViewById(R.id.inputBirthdate); 
inputEmail = (EditText) findViewById(R.id.inputEmail); 
inputMobile = (EditText) findViewById(R.id.inputMobile); 
inputItemID = (EditText) findViewById(R.id.inputItemID); 
inputVoucherID = (EditText) findViewById(R.id.inputVoucherID); 


btnCreateProduct = (Button) findViewById(R.id.btnAddCustomer); 
btnCreateProduct.setOnClickListener(this); 
} 


// button click event 


    @Override 
    public void onClick(View v) { 
     // creating new product in background thread 
     new PostComment().execute(); 
    } 



    public void sendCustomer() { 
     List<NameValuePair> params = new ArrayList<NameValuePair>(); 
     params.add(new BasicNameValuePair("oAuth", "test123")); 
     params.add(new BasicNameValuePair("action", "add-customer")); 
     params.add(new BasicNameValuePair("company_id", inputCompanyID.getText().toString())); 
     params.add(new BasicNameValuePair("branch_id", inputBranchID.getText().toString())); 
     params.add(new BasicNameValuePair("lastname", inputLName.getText().toString())); 
     params.add(new BasicNameValuePair("firstname", inputFName.getText().toString())); 
     params.add(new BasicNameValuePair("gender_id", inputGenderID.getText().toString())); 
     params.add(new BasicNameValuePair("birth_date", inputBirthdate.getText().toString())); 
     params.add(new BasicNameValuePair("email", inputEmail.getText().toString())); 
     params.add(new BasicNameValuePair("mobile", inputMobile.getText().toString())); 
     params.add(new BasicNameValuePair("item_id", inputItemID.getText().toString())); 
     params.add(new BasicNameValuePair("voucher_id", inputVoucherID.getText().toString())); 

     String response = ISparkLib.getHttpResponse("http://192.168.0.110/teezly/API/1.0/customer.php", params); 
     Log.e("PARAMS",""+response); 

     return; 
     } 


class PostComment extends AsyncTask<String, String, String> { 

@Override 
protected void onPreExecute() { 
    super.onPreExecute(); 
    pDialog = new ProgressDialog(MainActivity.this); 
    pDialog.setMessage("Creating Product.."); 
    pDialog.setIndeterminate(false); 
    pDialog.setCancelable(true); 
    pDialog.show(); 
} 


        @Override 
        protected String doInBackground(String... params) { 
         new Thread(new Runnable() { 
          public void run() { 
           // TODO Auto-generated method stub 
           try 
           { 
            sendCustomer(); 
            Thread.sleep(0); 
           }catch(Exception e){ 
           } 

          } 
         }).start(); 
         return null; 
        } 


       }} 
+1

解析什么?你能解释一下你的问题吗? – 2014-02-13 10:52:15

+0

检查:http://stackoverflow.com/questions/21480634/unable-to-loop-through-dynamic-json-string-recursively-in-android/21480997#21480997 – user2450263

+0

你想解析回应?它是一个JSON字符串?如果你想在你的网站数据库中添加一些值,你必须在服务器上开发一个可以接收值的APi – Dyna

回答

0

一些事情你可以在你的代码调整:

SendCustomer不返回任何东西,但你的AsyncTask返回doInbackground()一个字符串。

也不需要转换为字符串当你getText(),这是多余的。

因此改变sendCustomer这样的:

public String sendCustomer() { 
    List<NameValuePair> params = new ArrayList<NameValuePair>(); 
    params.add(new BasicNameValuePair("oAuth", "test123")); 
    params.add(new BasicNameValuePair("action", "add-customer")); 
    params.add(new BasicNameValuePair("company_id", inputCompanyID.getText())); 
    params.add(new BasicNameValuePair("branch_id", inputBranchID.getText())); 
    params.add(new BasicNameValuePair("lastname", inputLName.getText())); 
    params.add(new BasicNameValuePair("firstname", inputFName.getText())); 
    params.add(new BasicNameValuePair("gender_id", inputGenderID.getText())); 
    params.add(new BasicNameValuePair("birth_date", inputBirthdate.getText())); 
    params.add(new BasicNameValuePair("email", inputEmail.getText())); 
    params.add(new BasicNameValuePair("mobile", inputMobile.getText())); 
    params.add(new BasicNameValuePair("item_id", inputItemID.getText())); 
    params.add(new BasicNameValuePair("voucher_id", inputVoucherID.getText())); 

    String url = "http://192.168.0.110/teezly/API/1.0/customer.php"; 
    String response = ISparkLib.getHttpResponse(url, params); 
    Log.e("PARAMS",""+response); 

return response; 
} 

AsyncTask已经是一个线程没有必要使用它里面的线,那是整点。

变化`doInbackground这样的:

@Override 
protected String doInBackground(String... params) { 
    return sendCustomer(); 
} 

就可以读取结果里面的onPostExecute

protected void onPostExecute(String result) { 
    // do something with the result 
    Log.e("PARAMS","result =" + result); 
} 

投递PHP服务器时,它是非常容易阅读的POST变量

customer.php做到这一点

<?php 
if(isset($_POST)){ 
    //to check the data 
    var_dump($_POST); 
    //get the value assign them to variables 
    $oAuth = $_POST['oAuth']; 
    $action = $_POST['action']; 
    $company_id = $_POST['company_id']; 
    $branch_id = $_POST['branch_id']; 
    $lastname = $_POST['lastname']; 
    $firstname = $_POST['firstname']; 
    $gender_id = $_POST['gender_id']; 
    $birth_date = $_POST['birth_date']; 
    $email = $_POST['email']; 
    $mobile = $_POST['mobile']; 
    $item_id = $_POST['item_id']; 
    $voucher_id = $_POST['voucher_id']; 
} 
?> 

还有其他的事情可以改善你的代码。我希望这有助于你开始!