Php 安卓:凌空向拉威尔发帖不会';行不通

Php 安卓:凌空向拉威尔发帖不会';行不通,php,android,laravel,android-volley,Php,Android,Laravel,Android Volley,我正在使用谷歌来处理我的应用程序网络 我的后端是一个apache服务器。当我试图使用发出POST请求时,我得到一个空的$\u POST数组 我可以用这里描述的方法解决这个问题: 但对于对象不是很复杂的简单情况,它似乎是一种解决方案。 另外,我想使用和一个定制的GsonRequest,但它会带来同样的问题 我觉得奇怪的是,php,尤其是Laravel,不知道如何处理JSON请求,因为这是一个REST框架,我是否遗漏了什么?有更好的解决方法吗?显然,解决方案非常简单,只需深入研究文档:) 特别是本

我正在使用谷歌来处理我的应用程序网络

我的后端是一个apache服务器。当我试图使用发出POST请求时,我得到一个空的
$\u POST
数组

我可以用这里描述的方法解决这个问题:

但对于对象不是很复杂的简单情况,它似乎是一种解决方案。 另外,我想使用和一个定制的GsonRequest,但它会带来同样的问题


我觉得奇怪的是,php,尤其是Laravel,不知道如何处理JSON请求,因为这是一个REST框架,我是否遗漏了什么?有更好的解决方法吗?

显然,解决方案非常简单,只需深入研究文档:)

特别是本说明:

一些JavaScript库(如主干)可能会将输入作为JSON发送到应用程序。您可以通过Input::get like normal访问此数据


我就是这样解决的。下面是我创建的自定义类,它扩展了volley类。参数以映射形式提供

public class CustomJsonRequest extends Request {

Map<String, String> params;       
private Response.Listener listener; 

public CustomJsonRequest(int requestMethod, String url, Map<String, String> params,
                      Response.Listener responseListener, Response.ErrorListener errorListener) {

    super(requestMethod, url, errorListener);
    this.params = params;
    this.listener = responseListener;
}

@Override
protected void deliverResponse(Object response) {
    listener.onResponse(response); 

}

@Override
public Map<String, String> getParams() throws AuthFailureError {
         return params;
}

@Override
protected Response parseNetworkResponse(NetworkResponse response) {
    try {
        String jsonString = new String(response.data, HttpHeaderParser.parseCharset(response.headers));
        return Response.success(new JSONObject(jsonString),
        HttpHeaderParser.parseCacheHeaders(response));
    } catch (UnsupportedEncodingException e) {
        return Response.error(new ParseError(e));
    } catch (JSONException je) {
        return Response.error(new ParseError(je));
    }
}

}
public类CustomJsonRequest扩展请求{
映射参数;
私人回应。倾听者;
公共CustomJsonRequest(int-requestMethod、字符串url、映射参数、,
Response.Listener responseListener,Response.ErrorListener ErrorListener){
super(requestMethod、url、errorListener);
this.params=params;
this.listener=responseListener;
}
@凌驾
受保护的void deliverResponse(对象响应){
onResponse(response);
}
@凌驾
公共映射getParams()引发AuthFailureError{
返回参数;
}
@凌驾
受保护的响应parseNetworkResponse(NetworkResponse响应){
试一试{
String jsonString=新字符串(response.data,HttpHeaderParser.parseCharset(response.headers));
返回Response.success(新的JSONObject(jsonString),
HttpHeaderParser.parseCacheHeaders(响应));
}捕获(不支持的编码异常e){
返回Response.error(新的ParseError(e));
}捕获(JSONException je){
返回Response.error(newparseerror(je));
}
}
}
您可以提供pamas作为

Map<String, String> params = new HashMap<String, String>();
  params.put("email", email.getText().toString());
  params.put("password", password.getText().toString());
Map params=newhashmap();
参数put(“email”,email.getText().toString());
put(“password”,password.getText().toString());

使用此选项,您将能够在api中使用GET或POST谓词。

使用此
$\u REQUEST
而不是
$\u POST
:D

这仅适用于对象为平面的简单情况,但如果您想要发送复杂的数据结构,该怎么办?我遇到过这种情况,但我认为可以通过使用$\u POST解决['userinfo']['email']。