我有我的Android Java代码,它必须将一些数组和一些多维数组传递给PHP服务器。不幸的是,我无法访问PHP服务器。
这是PHP服务器API:
$result= array(
"username" => "admin",
"password" => "admin",
"hobbies" => array(
"1" => "science"
),
"skills" => array(
"1" => array(
"Boxing" => "Yes"
)
)
);
这是我的安卓Java代码:
final String hobbies[] = {"science"};
final String skills[][] = {{"Boxing"},{"Yes"}};
@Override
protected Map<String, String> getParams() {
Map<String, String> jParams= new HashMap<String, String>();
JSONArray arrHobbies = new JSONArray();
JSONArray arrSkills = new JSONArray();
arrHobbies.put(hobbies[0]);
arrSkills.put(skills[0][0]);
jParams.put("username", "admin");
jParams.put("password", "admin");
jParams.put("hobbies",arrHobbies.toString();
jParams.put("skills",arrSkills.toString();
return jParams;
}};
然后,我使用此代码查看数据是如何发送的。
Log.d("Response : ", jParams.toString());
它在安卓日志上显示了这一点:
{password=admin, username=admin, hobbies=["science"], skills=[["275]]}
更新这是我调试代码时的哈希值:
0 = {java.util.HashMap$HashMapEntry@4884} "hobbies" -> "{"1":"1"}"
1 = {java.util.HashMap$HashMapEntry@4885} "password" -> "admin"
2 = {java.util.HashMap$HashMapEntry@4886} "username" -> "admin"
3 = {java.util.HashMap$HashMapEntry@4887} "skills" -> "{"1":{"Boxing":"Yes"}}"
我从未成功地与PHP服务器API进行通信。请帮助我在哪里丢失或错误。
有一个图书馆如何调用GSON,在互联网上搜索这是将字符串解析为 Json 和将 Json 解析为字符串的最快、最简单的方法。
我认为您的问题是 php 中的关联数组表示 json 字符串中的 JSON 对象,因此您可能应该向您的 PHP 服务器 API 发送这样的东西:
{
"password": "admin",
"username": "admin",
"hobbies":{
"1": "science"
},
"skills": {
"1": {
"Boxing": "Yes"
}
}
}
在这里我不能 100% 确定,这取决于您的服务器实现,但要实现上面的 json 输出,您的 getParam() 应如下所示:
protected String getParams() {
JSONObject jParams = new JSONObject();
try {
JSONObject arrHobbies = new JSONObject();
arrHobbies.put("1", "science");
JSONObject boxing = new JSONObject();
boxing.put("Boxing", "Yes");
JSONObject arrSkills = new JSONObject();
arrSkills.put("1", boxing);
jParams.put("username", "admin");
jParams.put("password", "admin");
jParams.put("hobbies", arrHobbies);
jParams.put("skills", arrSkills);
} catch (JSONException e) {
e.printStackTrace();
}
return jParams.toString();
}
希望这对您有所帮助:
@Override 受保护的地图获取参数() {
Map<String, String> jParams = new HashMap<String, String>();
JSONArray arrHobbies = new JSONArray();
JSONArray arrSkills1 = new JSONArray();
JSONArray arrSkills2 = new JSONArray();
arrHobbies.put("science");
arrSkills1.put("Boxing");
arrSkills1.put("Yes");
arrSkills2.put(arrSkills1);
jParams.put("username", "admin");
jParams.put("password", "admin");
jParams.put("hobbies", arrHobbies.toString());
jParams.put("skills", arrSkills2.toString());
return jParams;
}