How to send JSON array containg jsonobjects to php server [closed]

自古美人都是妖i 提交于 2020-01-24 17:08:05

问题


Hello everyone I m sorry if this has been asked earlier , i have been searching for this solution since past 3 days.I am new in android and php. I want to know how can i send "jsonArray"(shown below) to my php server and then extract jsonobject values recieved in php. I have tried jsonarrayrequest and hashmap but was not able to send. Please help.

String url="http://192.168.43.210/jjj.php";
JSONArray list;
RequestQueue requestQueue;
final JSONArray jsonArray=new JSONArray();

for (int i=0;i<valu;i++)
{
JSONObject jsonObject=new JSONObject();
try {
jsonObject.put("comptext",smslist.get(i).completeText);
jsonObject.put("amount",smslist.get(i).amount);
jsonObject.put("txntype",smslist.get(i).txnType);
jsonObject.put("party",smslist.get(i).party);
jsonObject.put("from",smslist.get(i).fromNo);
jsonObject.put("datetime",smslist.get(i).dateTime);
jsonArray.put(jsonObject);

} catch (JSONException e) {
e.printStackTrace();
}
}


 JsonArrayRequest jsonArrayRequest=new JsonArrayRequest(Request.Method.POST, url, new Response.Listener<JSONArray>() {
                @Override
                public void onResponse(JSONArray response) {

                    result.append("Successfully sent");
                }
            }, new Response.ErrorListener() {
                @Override
                public void onErrorResponse(VolleyError error) {

                }
            }){
                protected Map<JSONArray,JSONArray> getparams() throws AuthFailureError{
                    Map<JSONArray,JSONArray> parameters = new HashMap<JSONArray, JSONArray>();
                    parameters.put(list,jsonArray);
                    return parameters;

                }
            };
            requestQueue.add(jsonArrayRequest);

        }


    });

回答1:


Use StringRequest instead of JsonArrayRequest for example:

private void register() {

        if (!validate()) {

            onRegistrationFailed("Registration Failed");
            return;

        }
        final String name = et_username.getText().toString();
        final String email = et_email.getText().toString();
        final String phone = et_phone.getText().toString();
        final String password = et_password.getText().toString();

        showDialog();

        StringRequest strRequest = new StringRequest(Request.Method.POST, Config.MAIN_URL + Config.REGISTER,
                new Response.Listener<String>() {
                    @Override
                    public void onResponse(String response) {
                        Log.d(TAG, "Register Response: " + response.toString());
                        hideDialog();
                        try {
                            JSONObject jsonObject = new JSONObject(response);

                            int status = jsonObject.getInt("status");
                            String msg = jsonObject.getString("message");

                            if (status == SUCCESS) {

                                onRegistrationSuccess(name,email);

                            } else {

                                onRegistrationFailed(msg);
                            }

                        } catch (JSONException e) {
                            e.printStackTrace();
                        }
                    }

                }, new Response.ErrorListener() {
            @Override
            public void onErrorResponse(VolleyError error) {
                Log.e(TAG, "Registration Error: " + error.getMessage());
                hideDialog();
                Toast.makeText(getApplicationContext(),
                        error.getMessage(), Toast.LENGTH_LONG).show();
            }
        }) {
            @Override
            protected Map<String, String> getParams() {
                // Posting params to register url
                Map<String, String> params = new HashMap<String, String>();
                params.put(Config.KEY_USERNAME, name);
                params.put(Config.KEY_EMAIL, email);
                params.put(Config.KEY_PHONE, phone);
                params.put(Config.KEY_PASSWORD, password);
                return params;
            }

        };

        // Adding request to request queue
        AppController.getInstance().addToRequestQueue(strRequest);

    }



回答2:


This is working code for login sample. so try this, and change as per your need.

Login.java

package com.example.volleytest;

import android.app.ProgressDialog;
import android.content.DialogInterface;
import android.net.ConnectivityManager;
import android.net.NetworkInfo;
import android.os.Bundle;
import android.support.v7.app.AlertDialog;
import android.support.v7.app.AppCompatActivity;

import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import com.android.volley.AuthFailureError;
import com.android.volley.Request;
import com.android.volley.RequestQueue;
import com.android.volley.Response;
import com.android.volley.VolleyError;
import com.android.volley.toolbox.StringRequest;
import com.android.volley.toolbox.Volley;

import java.util.HashMap;
import java.util.Map;

import org.json.JSONException;
import org.json.JSONObject;

public class Login extends AppCompatActivity{

public static final String LOGIN_URL = "YOUR_URL";
                                        //"http://192.168.1.100/Login/admin.php";
ProgressDialog pDialog;

public static final String KEY_USERNAME="username";
public static final String KEY_PASSWORD="password";

private EditText editTextUsername;
private EditText editTextPassword; 
private Button buttonLogin;

private String username;
private String password;

@Override
protected void onCreate(Bundle savedInstanceState) {
    // TODO Auto-generated method stub
    super.onCreate(savedInstanceState);
    setContentView(R.layout.login);

        editTextUsername = (EditText) findViewById(R.id.editTextUsername);
        editTextPassword = (EditText) findViewById(R.id.editTextPassword);

        buttonLogin = (Button) findViewById(R.id.buttonLogin);

        buttonLogin.setOnClickListener(new View.OnClickListener() {

            @Override
            public void onClick(View v) {
                // TODO Auto-generated method stub

                if(isNetworkAvailable()){
                userLogin();
                }
                else
                {
                    showMessageDialog("Error", "Check your Internet Connection..!");
                }
            }
        });
}

private void userLogin() {
    username = editTextUsername.getText().toString().trim();
    password = editTextPassword.getText().toString().trim();

    pDialog = new ProgressDialog(this);
    pDialog.setMessage("Loading...");
    pDialog.show(); 

    StringRequest stringRequest = new StringRequest(Request.Method.POST, LOGIN_URL,
            new Response.Listener<String>() {
                @Override
                public void onResponse(String response) {

                    try {
                        //JSONArray myJSON= new JSONArray(response);

                            JSONObject parentObject = new JSONObject(response);
                            JSONObject childObject = parentObject.getJSONObject("Tracking"); 

                              String status = childObject.optString("status");
                              String type = childObject.optString("type");

                              //System.out.println("status : " + status);
                              //System.out.println("Type : " + type);

                                if(status.trim().equals("success"))
                                {
                                    pDialog.hide();
                                    showMessageDialog("Login", type + " Login Successfully..!");
                                }
                                else
                                {
                                    pDialog.hide();
                                    showMessageDialog("Login", "No Users/Admin were Found..! ");
                                }


                    } catch (JSONException e) {
                        // TODO Auto-generated catch block
                        //e.printStackTrace();
                        pDialog.hide();
                        showMessageDialog("JSON Error", "Server Error..! Try after Some Time..!");//e.getMessage());
                    }

                }
            },
            new Response.ErrorListener() {
                @Override
                public void onErrorResponse(VolleyError error) 
                {
                    pDialog.hide();
                    //showMessageDialog("Login", "Reponse => " + error.toString());
                    showMessageDialog("Login", "Server Error..! Try after Some Time..!");
                }
            }){
        @Override
        protected Map<String, String> getParams() throws AuthFailureError {
            Map<String,String> map = new HashMap<String,String>();
            map.put(KEY_USERNAME,username);
            map.put(KEY_PASSWORD,password);
            return map;
        }
    };

    RequestQueue requestQueue = Volley.newRequestQueue(this);
    requestQueue.add(stringRequest);
}

public void showMessageDialog(String title , String Message)
{
    AlertDialog dialog = new AlertDialog.Builder(Login.this)
    .setTitle(title)
    .setMessage(Message)
    .setPositiveButton("Ok", new DialogInterface.OnClickListener() {

        @Override
        public void onClick(DialogInterface dialog, int which) {
            // TODO Auto-generated method stub
            dialog.dismiss();

        }
    })

    .show();

    //TextView textView = (TextView) dialog.findViewById(android.R.id.message);
    //textView.setTextSize(25); 

}

  private boolean isNetworkAvailable() {
        ConnectivityManager connectivityManager = (ConnectivityManager) getSystemService( CONNECTIVITY_SERVICE );
        NetworkInfo activeNetworkInfo = connectivityManager.getActiveNetworkInfo();
        return activeNetworkInfo != null && activeNetworkInfo.isConnected();
    }

}

login.xml

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent"
android:orientation="vertical"
android:layout_height="match_parent" android:paddingLeft="@dimen/activity_horizontal_margin"
android:paddingRight="@dimen/activity_horizontal_margin"
android:paddingTop="@dimen/activity_vertical_margin"
android:paddingBottom="@dimen/activity_vertical_margin"
>

<TextView
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:gravity="center"
    android:textSize="20dp"
    android:text="Login Using Volley Library"
    />

<TextView
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_marginTop="20dp"
    android:text="Enter Username"
    />

<EditText
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:id="@+id/editTextUsername" />

<TextView
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:text="Enter Password"
    />

<EditText
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:inputType="textPassword"
    android:id="@+id/editTextPassword" />

<Button
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:text="Login"
    android:id="@+id/buttonLogin" />

</LinearLayout>


来源:https://stackoverflow.com/questions/37203730/how-to-send-json-array-containg-jsonobjects-to-php-server

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!