我想将arraylist
从android发送到php
以便存储在database
中,但我无法为其找到确切的代码。任何人都可以指导我解决这个问题的方向吗?
以下是我创建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());
}
我使用retrofit2将arraylist发送到服务器,但正如我在其他问题中看到的那样,我无法获取file_get_contents的url?
答案 0 :(得分:1)
你去......
第1步:在gradle.app
中添加改造依赖项compile 'com.squareup.retrofit:retrofit:1.9.0'
步骤2:创建一个如下所示的RestClient类。
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;
}
}
步骤3:为POST URL建立接口。
public interface ApiInterface {
@POST("/sendData")
void sendData(@Body JsonObject jsonObject,
Callback<DataModel> dataModelCallback);
}
步骤4:制作如下的POJO课程。
public class DataModel{
private String success;
public String getSuccess() {
return success;
}
public void setSuccess(String success) {
this.success = success;
}
}
第5步:从您的活动中调用webservice,如下所示。
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) {
}
}
希望这会对你有帮助!
答案 1 :(得分:0)
一次性发送所有数据。创建JsonArray并通过创建JsonObject添加每个对象。完成后,一次性上传所有数据。你只需要在php中解码该数组。
使用它的优点是,您可以很好地管理改造中的响应(是异步的)
答案 2 :(得分:0)
您可以通过
解析json
中的php
值
<?php
header('Content-type: application/json');
$jsonString = file_get_contents('php://input');
$jsonArray = json_decode($jsonString,true);
print_r($jsonArray);/* print array */
&GT;
答案 3 :(得分:0)
在几乎寻找3周以上和n +小时的挫折之后,我终于找到了解决问题的方法并与人分享,这样他们就可以从中受益(因为我被另一个A / c阻止了问太多问题和投票),为了将您的数组列表发送到您的服务器,我们需要使用另一个库,根据我的需要最合适的是循环j的async-http库,这些是导入和使用的步骤程序中的库: -
1.)通过在bulid.gradle(app模块)中编写此语句将库导入到项目中: -
编译'com.loopj.android:android-async-http:1.4.9'
2.)创建以下变量以便在程序中使用它们: -
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。)现在我们使用这些变量并运行程序: -
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();
}
});
我希望这有点清除你的怀疑我仍然在创建我的php端以便在数据库中插入数据