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