android post传递数组类型数据给后台php

本文介绍了一种解决Android应用通过HTTP POST方式传递复杂二维数组到PHP后端的方法,并详细记录了解决过程中的关键步骤。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

这里分享一个android端传递数组给后台php的方式。后台要我传递的是一个二维数组,如下图。

$data['Car']=array(
   "2_100" => array(
        "c1" => '2', 
        "c2" => 0,  
        "i" => '100',
        "c" => '00', 
        "q" => 1, 
        "n" =>  '汽油',
        "g" =>'', 
        "j" => 55, 
        "p" => '60.00',
        "w" => '9.00', 
        "m" => '7000'
   ),
   "2_1006280" => array(
    "c1" => '2', 
    "c2" => 0,  
    "i" => '1006280', 
    "c" => '', 
    "q" => 1, 
    "n" => '汽油',  
    "g" =>'', 
    "j" => 55, 
    "p" => '7', 
    "w" => '9', 
    "m" => '9'
   ) 
); 

一、分析:然后看到我就懵逼了,键还能用数字,那我就铁定不能用对象转json了,只能自己拼接。ios那边很快就传递过去了,他们用的是字典的数据形式拼接传递过去的,成功获取数据。我这边就比较焦灼了,我完美拼接后传递过去,结果,后台调试说不能识别这个二维数组,当时就炸了。。。我用的okhttp3,然后郁闷。。。用我心爱的postman调试总是不行,后台不能解析这个二维数组
这里写图片描述

二、解决方案
同样是拼接好你的二维数组给你后台想要的效果,然后。。。
原来post方式只要改变你的键的数据类型,后台就会得到这个类型,然后就可以识别出这个数据的类型了。键改成这样就可以了,Car[][]。同时,postman的打开方式满分。
这里写图片描述

代码片段里面就是这样。

这里写图片描述

三、至此,解决了困扰我两天的问题,希望对你也有所帮助。

Android中使用POST请求向后台传递数组可以通过以下步骤实现: 1. 创建一个JSON数组对象,将需要传递数据添加到其中。例如,以下代码创建了一个包含两个字符串的JSON数组: ``` JSONArray jsonArray = new JSONArray(); jsonArray.put("string1"); jsonArray.put("string2"); ``` 2. 将JSON数组对象转换为字符串。例如,以下代码将上面创建的JSON数组对象转换为字符串: ``` String jsonString = jsonArray.toString(); ``` 3. 创建一个HTTP POST请求对象,并设置请求头和请求体。例如,以下代码创建了一个HTTP POST请求对象: ``` String url = "http://example.com/api"; HttpPost httpPost = new HttpPost(url); httpPost.setHeader("Content-Type", "application/json"); httpPost.setHeader("Accept", "application/json"); StringEntity entity = new StringEntity(jsonString); httpPost.setEntity(entity); ``` 在上面的代码中,设置了请求头为"Content-Type"和"Accept",并将请求体设置为上面转换的JSON数组字符串。 4. 发送HTTP POST请求并处理响应。例如,以下代码发送HTTP POST请求并处理响应: ``` HttpClient httpClient = new DefaultHttpClient(); HttpResponse response = httpClient.execute(httpPost); int statusCode = response.getStatusLine().getStatusCode(); if (statusCode == HttpStatus.SC_OK) { String responseBody = EntityUtils.toString(response.getEntity()); // 处理响应 } else { // 处理错误 } ``` 在上面的代码中,使用HttpClient发送HTTP POST请求,并检查响应的状态码。如果状态码为200(HttpStatus.SC_OK),则将响应的实体转换为字符串并进行处理。否则,处理错误。 以上是向后台传递数组的一种方法,具体实现可能会根据后台API的设计而有所不同。
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值