2017-07-17 72 views
0

我想从我的Android应用程序向Laravel应用程序发送一些数据。如果我使用邮差测试Laravel API,则所有发布的数据都会被正确接收。但是,调用从Android的API时的Laravel应用程序接收一个空请求和POST参数是空的:使用Android Volley致电Laravel时的空请求

机器人:

StringRequest sr = new StringRequest(Request.Method.POST, url, new Response.Listener<String>() { 
     @Override 
     public void onResponse(String response) { 
      Log.v("TAG",response.toString()); 
     } 
    }, new Response.ErrorListener() { 
     @Override 
     public void onErrorResponse(VolleyError error) { 
      Log.v("TAG",error.toString()); 
     } 
    }){ 
     @Override 
     protected Map<String, String> getParams() throws AuthFailureError { 
      Map<String,String> params = new HashMap<String, String>(); 
      params.put("user","ASDASDADSAS"); 
      params.put("pass","ASDASDADSAS"); 
      params.put("comment", "ASDASDADSAS"); 

      return params; 
     } 

     @Override 
     public Map<String, String> getHeaders() throws AuthFailureError { 
      Map<String,String> params = new HashMap<String, String>(); 
      params.put("Content-Type","application/x-www-form-urlencoded"); 
      return params; 
     } 
    }; 

    queue.add(sr); 

响应:

<pre></pre><pre></pre><pre></pre>{"status":"500","data":[],"message":"**** parameter is either missing or empty"} 

1,500是硬编码的,而不是服务器实际抛出的东西。

2,创建test.php文件并回显$ _POST时,发送的数据是在laravel之外收到的。

Laravel: - 已将路由添加到csrf例外。

namespace App\Http\Controllers; 

use Illuminate\Http\Request; 
use Illuminate\Routing\Controller; 

class APIController extends Controller 
{ 

    public function postitems(Request $request){ 

     echo "<pre>"; 
      print_r($request->input('user')); // null 
     echo "</pre>"; 

     echo "<pre>"; 
      print_r($request->all()); // null 
     echo "</pre>"; 

     $rawPostData = file_get_contents("php://input"); 

     echo "<pre>"; 
      print_r($rawPostData); //null 
     echo "</pre>"; 

    //handles request and api Call and gives response if all the data is present 
    } 
} 

回答

0

奥凯想通了....

不包括尾随/在你的网址或者由于某些原因Laravel删除所有帖子的参数。

0
  1. 首先在邮递员执行API为500,请验证是内部服务器错误。
  2. 如果它正在工作,然后尝试从后端进行调试。
  3. 您可以添加回显以打印帖子参数以验证它是否已正确接收。
+0

1,已经完成了500个硬编码,而不是服务器实际发送的内容。 2,创建test.php文件并回显$ _POST时,发送数据在laravel之外被接收。 3,它们是空的 –