Android:使用Volley发布到Laravel不起作用

时间:2014-01-06 18:51:52

标签: php android laravel android-volley

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

我的后端是一个带有Laravel 4的apache服务器。当我尝试使用JsonObjectRequest发出POST请求时,我得到一个空的$_POST数组。

我能够使用此处描述的方法解决它:Volley JsonObjectRequest Post request not working

但它似乎是对象不是很复杂的简单情况的解决方案。 另外,我想使用Gson和自定义GsonRequest,但它也会出现同样的问题。

对我来说奇怪的是,php,特别是Laravel不知道如何处理JSON请求,因为这是一个REST框架,我错过了什么?有没有更好的方法来解决它?

3 个答案:

答案 0 :(得分:0)

嗯,显然解决方案非常简单,只需要深入了解文档:)

http://laravel.com/docs/requests

特别是这个注意:

  

某些JavaScript库(如Backbone)可能会将输入作为JSON发送到应用程序。您可以通过Input :: get正常访问此数据。

答案 1 :(得分:0)

这就是我解决它的方式。下面是我创建的扩展类的自定义类。参数以Map

的形式提供
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));
    }
}

}

你可以提供pama作为

Map<String, String> params = new HashMap<String, String>();
  params.put("email", email.getText().toString());
  params.put("password", password.getText().toString());

使用此功能,您可以在api中使用GET或POST动词。

答案 2 :(得分:0)

使用此$_REQUEST NOT $_POST:D