我在Java上使用Volley并没有任何问题。 转换成Kotlin时,我发现请求发送参数出现问题 我尝试使用自定义请求类从请求扩展,这不能解决我的问题 我也用JsonObjectRequest与哈希映射一些错误的参数不随请求发送。 也使用了JsonObjectRequest和JSONObject,同样的错误仍然存在 在那之后我使用了Post Man API,API方面很好,没有任何问题 在使用StringRequest时也没有任何问题
我用JsonObjectRequest编写的第一个代码是
val url = "http://10.0.2.2/machine_project/includeJSON/system_machine.php"
val ahOBJ = JSONObject()
ahOBJ.put("dd", 2)
Log.d("TAG","kotJson")
val queu = Volley.newRequestQueue(this)
val ahReq = JsonObjectRequest(Request.Method.POST, url, ahOBJ, Response.Listener { response ->
val str = response.toString()
Log.d("TAG","response: $str")
}, Response.ErrorListener {
error ->
Log.d("TAG","response: ${error.message}")
})
queu.add(ahReq)
第二个代码是
val jr:RequestQueue = Volley.newRequestQueue(this)
val params = HashMap<String,String>()
params["dd"] = "2"
Log.d("TAGTest", "Ready to go")
val jsObj = JsonObjectRequest(Request.Method.POST,
urlUP,
JSONObject(params),
Response.Listener
{
response ->
Log.d("TAGTest", response.toString())
},
Response.ErrorListener {
error ->
Log.d("TAGTest", "error: ${error.message}")
})
jr.add(jsObj)
所有结果均为
{"error":true,"msg":"All filed required"}
此结果来自后端API
API是
$response = array();
if($_SERVER['REQUEST_METHOD'] == 'POST'){
if( isset($_POST['dd'])){
require_once ('systemMachineAPI.php');
$result = get_sm();
if($result != NULL){
$response['error'] = false;
$response['msg'] = $result;
}else{
$response['error'] = true;
$response['msg'] = 'We Found Some Mistake';
}
}else{
$response['error'] = true;
$response['msg'] = 'All filed required';
}
}else{
$response['error'] = true;
$response['msg'] = 'Cannot connect to server';
}
如果有人可以解决此问题或尝试与Kotlin Post prameter一起使用排球,请帮助我
答案 0 :(得分:0)
我知道那是一个旧帖子,希望您已经找到了解决的办法,但是我正在发布我的解决方案,以防其他人到达这里。
我认为,在PHP方面,您错过了对发布的字符串进行解码的操作。
通过Kotlin进行
val ahOBJ = JSONObject()
ahOBJ.put(“ dd”,2)
您正在为Volley提供一个json样式的对象,该对象将被发送到php脚本,因此在php端,您将得到一个可以处理的json样式的字符串,而不是POST参数。
在PHP方面尝试
// getting the posted data and decoding it to a json object
$postedContent = json_decode(file_get_contents("php://input"));
// $postedContent should now contain your 'dd' property
if (property_exists($postedContent, 'dd'))
{
// yes, we got our property
echo $postedContent->dd;
}