Я наклоняю laravel framework, я установил версию 5.0. я использую его для службы json api, которая даст JSON-выход после вызова определенного маршрута. он работает очень хорошо, если я requrest URL из браузера. но когда я пытаюсь получить доступ из моего приложения для Android, он дает ошибку, что файл не найден исключение (java.io.filenotfoundexception). после проверки журнала я получил указание, что у laravel есть ошибка исключения несогласия Token. laravel нужен токен csrf для доступа к ресурсам. У меня есть опция, что я могу отключить эту аутентификацию, но она выглядит менее безопасным способом.
может каким-то образом я могу разрешить доступ к приложению laravel из моего приложения для Android не из другого приложения? мы можем указать ключ csrf из приложения Android?
Если вы не хотите отключать токены CSRF, вам нужно будет получить CSRF в одном запросе, а затем передать извлеченный токен вместе с запросом POST.
// Create a new HttpClient and Post Header HttpClient httpclient = new DefaultHttpClient(); // Get the CSRF token httpClient.execute(new HttpGet("http://www.yoursite.com/")); CookieStore cookieStore = httpClient.getCookieStore(); List <Cookie> cookies = cookieStore.getCookies(); for (Cookie cookie: cookies) { if (cookie.getName().equals("XSRF-TOKEN")) { CSRFTOKEN = cookie.getValue(); } } // Access POST route using CSRFTOKEN HttpPost httppost = new HttpPost("http://www.yoursite.com/your-post-route"); try { // Add your data List<NameValuePair> nameValuePairs = new ArrayList<NameValuePair>(2); nameValuePairs.add(new BasicNameValuePair("_token", CSRFTOKEN)); nameValuePairs.add(new BasicNameValuePair("stringdata", "Hello!")); httppost.setEntity(new UrlEncodedFormEntity(nameValuePairs)); // Execute HTTP Post Request HttpResponse response = httpclient.execute(httppost); } catch (ClientProtocolException e) { // TODO Auto-generated catch block } catch (IOException e) { // TODO Auto-generated catch block }