php : reading json arraylist and saving data in mysql?

感情迁移 提交于 2019-12-10 11:58:11

问题


I want to read arraylist from android into php in order to store in database, but I'm not able to find exact code for it. Can anybody guide me in the direction to solve this problem ?

Here is my java code for creating the arraylist

private void loadCart()
{

    productList.clear();
    Cursor cursor = dbHelper.getCarProducts();
    cursor.moveToFirst();
    do {
        CartProduct cartProduct = new CartProduct();
        cartProduct.setProductName("Name: "+cursor.getString(cursor.getColumnIndex("_Name")));
        cartProduct.setProductCost("Cost: "+cursor.getString(cursor.getColumnIndex("_Cost")));
        cartProduct.setProductPrice("Price: "+cursor.getString(cursor.getColumnIndex("_Price")));
        cartProduct.setProductQuantity("Quantity: "+cursor.getString(cursor.getColumnIndex("_Quantity")));
        productList.add(cartProduct);

    }while(cursor.moveToNext());


}

I'm using retrofit2 in order to send the arraylist to the server, but as I have seen in other question here I'm not able to get the url for the file_get_contents ?


回答1:


Here you go...

Step 1: Add retrofit dependency in your gradle.app

compile 'com.squareup.retrofit:retrofit:1.9.0'

Step 2: Make an RestClient class like below.

public class RestClient {
    private static final String BASE_URL = DataConstants.TEST_URL; //Place your web service URL here
    private ApiInterface apiService;

    public RestClient()
    {
        RequestInterceptor requestInterceptor = new RequestInterceptor() {
            @Override
            public void intercept(RequestFacade request) {

                request.addHeader("Accept", "application/json");
            }
        };

        RestAdapter restAdapter = new RestAdapter.Builder()
                .setLogLevel(RestAdapter.LogLevel.FULL)
                .setRequestInterceptor(requestInterceptor)
                .setEndpoint(BASE_URL)
                .build();

        apiService = restAdapter.create(ApiInterface.class);
    }

    public ApiInterface getApiService()
    {
        return apiService;
    }
}

Step 3: Make an Interface for POST URL.

public interface ApiInterface {
    @POST("/sendData")
    void sendData(@Body JsonObject jsonObject,
                          Callback<DataModel> dataModelCallback);
}

Step 4: Make an POJO class like below.

public class DataModel{
    private String success;

public String getSuccess() {
        return success;
    }

public void setSuccess(String success) {
        this.success = success;
    }

}

Step 5: Make an call of webservice from your activity like below.

private void callWebService(String user_id) {
        try {//TODO SEND
            final Utility utility = new Utility(this);
            utility.showProgressDialog();
            JsonObject myJsonData = new JsonObject();
            myJsonData.addProperty("user_id", user_id);
            Gson gsonData = new GsonBuilder().create();
            JsonArray dataArray = new JsonArray();
            dataArray = gsonData.toJsonTree(productList).getAsJsonArray();  //Here you want to add your array list i.e productList
            myJsonData.add("assign_to", jaAssignee);

            new RestClient().getApiService().sendData(myJsonData, new Callback<DataModel>() {
                @Override
                public void success(DataModel dataModel, Response response) {
                    utility.hideProgressDialog();
                    try {
                        String success = dataModel.getSuccess();
                        if (success.equalsIgnoreCase("Success")) {
                            //Do what you want to do
                        }
                    } catch (Exception e) {
                    }
                }

                @Override
                public void failure(RetrofitError error) {
                    utility.hideProgressDialog();
                }
            });
        } catch (Exception e) {
        }
    }

Hope this will help you!




回答2:


Send all your data in one go. Create JsonArray and add each object by creating JsonObject. After its done upload all the data in one go. You'll just have to decode that array in php.

Advantage of using this is, you can manage the response in retrofit very well (being it asynchronous)




回答3:


you can parse json value in php by

<?php 
   header('Content-type: application/json');
   $jsonString = file_get_contents('php://input');   
   $jsonArray = json_decode($jsonString,true);

   print_r($jsonArray);/* print array */

?>




回答4:


After almost searching for 3+ weeks and n+ hours of frustration, i've finally found an working solution to my problem and sharing it with people so they could benefit from it (as i was blocked from another a/c due to asking too many questions and down votes ) , in order to send your array list to your server we need to use another library and the best fit according to my need is async-http library by loop j and these are the steps to import and use the library in your program :-

1.)import the library into your project by writing this statement in your bulid.gradle(app module):-

compile 'com.loopj.android:android-async-http:1.4.9'

2.)Create the following variables in order to use them in your program:-

 AsyncHttpClient (a client to send data to your server)
    RequestPrarms (Data sent to your server for parsing and further operations )
    String url(Link to your server where actually operations occurs)

3.) Now we use these variables and run the program :-

p

arams.put("OrderSummary", <your array list>);
           httpClient.post(APIURL.API_URL,params, new AsyncHttpResponseHandler() {
               @Override
               public void onSuccess(int statusCode, Header[] headers, byte[] responseBody) {
                   //your operations on success
               }

               @Override
               public void onFailure(int statusCode, Header[] headers, byte[] responseBody, Throwable error) {
                    Toast.makeText(getApplicationContext(),error.toString(),Toast.LENGTH_LONG).show();
               }
           });  

i hope this clears your doubts somewhat i'm still creating my php side in order to insert data in the database



来源:https://stackoverflow.com/questions/46231958/php-reading-json-arraylist-and-saving-data-in-mysql

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