我已经开发了一个应用程序,我将通过Json
将数据从手机发送到服务器,为此我使用 Volley
Android中的图书馆
但我无法将数据发送到服务器!
我简单的PHP代码:
$name = $_GET["name"];
$j = array('name' =>$name);
echo json_encode($j);
我的java代码:
private void makeJsonObjectRequest() {
mRequestQueue = Volley.newRequestQueue(this);
String url = "http://my-site-name/sampleGET.php";
StringRequest jsonObjReq = new StringRequest(
Request.Method.GET,
url,
new Response.Listener<String>() {
@Override
public void onResponse(String response) {
Log.d("result:", response);
Toast.makeText(getApplicationContext(), response, Toast.LENGTH_SHORT).show();
}
},
new Response.ErrorListener() {
@Override
public void onErrorResponse(VolleyError error) {
VolleyLog.d("err", "Error: " + error.getMessage());
makeJsonObjectRequest();
}
}
){
@Override
protected Map<String, String> getParams() {
Map<String, String> params = new HashMap<>();
params.put("name", "json");
return params;
}
};
mRequestQueue.add(jsonObjReq);
}
它也从以下链接获得帮助:Click to see link
但仍然无法使用它并从手机向服务器发送数据(POST或GET)!!! 我怎么能这样做?
答案 0 :(得分:0)
正如How to send json from android to php?
所述从当前代码中删除此方法:
@Override
protected Map<String, String> getParams() {
Map<String, String> params = new HashMap<>();
params.put("name", "json");
return params;
}
改为覆盖getBody()
方法。然后,根据以下示例调整它以返回您需要的json数据:
public byte[] getBody() throws AuthFailureError {
JSONObject js = new JSONObject();
try {
js.put("fieldName", "fieldValue");
} catch (JSONException e) {
e.printStackTrace();
}
return js.toString().getBytes();
}
然后在php中解码你的json数据:
$jsonRequest = json_decode(stream_get_contents(STDIN));
var_dump($jsonRequest);
如果需要更多信息,请与我们联系。