使用 Retrofit 从 Android 向服务器发送字符串数组
Posted
技术标签:
【中文标题】使用 Retrofit 从 Android 向服务器发送字符串数组【英文标题】:Send an array of strings to a server from Android using Retrofit 【发布时间】:2019-11-30 01:49:26 【问题描述】:我想使用 Retrofit 从 android 应用程序向服务器发送一个字符串数组。我不知道如何在服务器端发送和接收它:
//api interface...
@FormUrlEncoded
@POST("sendArray.php")
Call<ResponseModel> sendAns(@Field("ans[]") String[] ans);
//sending array in main activity
String[] ans = "ans1","ans2","ans3";
Call<ResponseModel> call = apiObject.sendAns(ans);
call.en....
//server side php code to get array
$ans = $_POST['ans[]'];
$ans1 = $ans[1];
我预计 $ans1 = "ans2" 的值,但我们什么也没得到。
【问题讨论】:
你为什么不var_dump($_POST)
看看你的价值是什么样的,然后你就知道如何访问它了。
参考这个***.com/questions/37698715/…
你能给我看看 var_dump($_POST) 的代码吗
【参考方案1】:
像这样发送和接收数组:
@POST("sendArray.php")
Call<ResponseModel> getSomething(@Body String[] ans );
如果你想给你的数组命名,那么创建RequestModel
,里面有你想要的数组。您也可以使用@SerializedName
注释设置名称
public class YourBodyRequest
@SerializedName("ans[]")
public String[] ans;
还有:
@POST("sendArray.php")
Call<ResponseModel> request(@Body YourBodyRequest request );
【讨论】:
感谢您的宝贵时间。你能发布php代码来接收吗? 此时,java.lang.NullPointerException: Attempt to invoke virtual method 'java.lang.String com.example.asus.simple.ResponseModel.getResponse()' on an null object reference at com .example.asus.simple.MainActivity$1.onResponse(MainActivity.java:90) 请阅读***.com/questions/8207488/… 你得到 null 因为没有响应,还有网络和响应我建议在做任何事情之前总是检查 null answer_table(ans
, ques_id
, test_code
) 值 ('$b','12','XYZ')"; $result = mysqli_query($con,$qry); if($result) $status = "ok"; echo json_encode(array("response"=>$status)); else $status = "错误"; echo json_encode(array("response"=>$status)); ?>以上是关于使用 Retrofit 从 Android 向服务器发送字符串数组的主要内容,如果未能解决你的问题,请参考以下文章
Android Retrofit2中Part和PartMap的区别