【问题标题】:how to post data from android to laravel 3 controller如何将数据从android发布到laravel 3控制器
【发布时间】:2014-11-19 07:13:27
【问题描述】:

大家好,我正在使用 laravel 3,我想向 laravel 3 控制器发出 post 请求。 这里是控制器users.php

      class Users_Controller extends Base_Controller
       {
           public $restful = true;

          public function post_signin()
          {
                 print("request success");
          }
        }

这里是 routes.php

         Route::get('signin', array('as'=>'signin','uses'=>'users@signin'));
         Route::post('signin', array('uses'=>'users@signin'));

这里是安卓发布请求

          httppost= new HttpPost("http://test.com/signin");

test.com 是我通过主机文件使用的本地域。 我应该在 android 中输入什么 url 来发出 post 请求?这样它就可以转到 users.php 并执行该文件的 post_signin 方法。

我试过了

   1) httppost= new HttpPost("http://test.com/signin");  (as per my route of routes.php)

2)httppost= new               HttpPost("http://localhost/androidtest/application/controller/users.php");

   3) httppost= new HttpPost("http://test.com/users/signin");
   (as per this referance (http://stackoverflow.com/questions/16137851/url-to-do-request-on-laravel)

【问题讨论】:

  • 你有收到来自 laravel 的回复信息吗?您可以发布您请求的完整 android 代码吗?
  • @user2432612 httpclient=new DefaultHttpClient();字符串 tmp=getApplicationContext().getResources().getString(R.string.site_url); httppost=新的HttpPost(tmp+"/login.php");响应=httpclient.execute(httppost); ResponseHandler responseHandler = new BasicResponseHandler();最终字符串响应 = httpclient.execute(httppost, responseHandler); System.out.println("响应:" + 响应);

标签: android laravel restful-url laravel-routing laravel-3


【解决方案1】:

根据您的评论,您正在执行请求两次,但使用不同的方法(执行)。您只需要执行一次即可向服务器发出请求。您还使用响应变量作为字符串和 HttpResponse 对象。

请尝试使用下面的代码提出您的请求,用您的网址更改网址

DefaultHttpClient httpClient = new DefaultHttpClient();
HttpPost httpPost = new HttpPost(url);

HttpResponse hResponse = httpClient.execute(httpPost);
StatusLine sl = hResponse.getStatusLine();
int statusCode = sl.getStatusCode();

if ( statusCode == 200 ){
    HttpEntity hp = hResponse.getEntity();
    InputStream content = hp.getContent();
    BufferedReader reader = new BufferedReader(new InputStreamReader(content));

    StringBuilder builder = new StringBuilder();

    String line;
    while((line = reader.readLine()) != null){
        builder.append(line);
    }

    String responseBody = builder.toString();

    System.out.println("Response : " + responseBody); 
}

【讨论】:

  • 非常感谢您的快速回复。我应该在我的 laravel 控制器中写什么?公共函数 post_signin() { print("请求成功");还是我应该解析 json 来回复?
  • 您可以通过多种方式回复回复。我在处理请求时使用的一件事我创建了带有对象的简单数组,例如$res = array( "status" => $this->status, "response" => $this->response ); return $res,而不是您可以简单地返回该数组,它将转换为您可以在应用程序内部解析的 JSON 字符串您可以签出文件更多信息:laravel.com/docs/4.2/responses
猜你喜欢
  • 1970-01-01
  • 2021-10-14
  • 1970-01-01
  • 2021-05-17
  • 2019-07-25
  • 1970-01-01
  • 1970-01-01
  • 2021-11-09
  • 2013-05-12
相关资源
最近更新 更多