Android设备上的POST请求500错误 - 本地服务器

时间:2016-11-07 16:55:53

标签: php android laravel post httpurlconnection

我正在尝试使用自己的服务器编写移动应用程序。服务器,我写的是使用Laravel框架的PHP,并由本地机器上的xampp托管。我设法通过手机连接 - 浏览器打开我的本地网站。但是我想写一个移动应用程序并通过HttpUrlConnection进入服务器。

使用我的浏览器一切正常。但我的POST请求给了我500代码。我想问题是请求属性,但我不知道写什么。

我的android - 帖子 - 请求代码:

JSONObject jsonObject = null;
    URL url = null;
   try {
                jsonObject = new JSONObject();
                jsonObject.put("name", bundle.getString("name"));
                jsonObject.put("password", bundle.getString("password"));
                jsonObject.put("email", bundle.getString("email"));


                url = new URL("http://192.168.1.101:8081/UserAdd");

            }
            catch(Exception ex){
                ex.printStackTrace();
            }
try {
        byte[] bytes = jsonObject.toString().getBytes("UTF-8");
        urlConnection = (HttpURLConnection)
                url.openConnection();
        urlConnection.setRequestMethod("POST");
       // urlConnection.setRequestProperty("Cookie", cookies);
        urlConnection.setRequestProperty("Content-Type", "application/json");
        urlConnection.setRequestProperty("Accept", "text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8");
        urlConnection.setRequestProperty("Host", "localhost:8081");
        urlConnection.setRequestProperty("Content-Length", String.valueOf(bytes.length));
        urlConnection.setDoOutput(true);
        urlConnection.setDoInput(true);
        if (flag) {
            urlConnection.setInstanceFollowRedirects(false);
        }

        OutputStream os = urlConnection.getOutputStream();
        /*BufferedWriter writer = new BufferedWriter(
                new OutputStreamWriter(os, "UTF-8"));
        writer.write(jsonObject.toString());
        writer.flush();
        writer.close();*/
        os.write(jsonObject.toString().getBytes());
        os.flush();
        os.close();

        urlConnection.connect();


        boolean redirect = false;

        int status = urlConnection.getResponseCode();
        if (status != HttpURLConnection.HTTP_OK) {
            if (status == HttpURLConnection.HTTP_MOVED_TEMP
                    || status == HttpURLConnection.HTTP_MOVED_PERM
                    || status == HttpURLConnection.HTTP_SEE_OTHER)
                redirect = true;
        }

        if (redirect) {
            String newUrl = urlConnection.getHeaderField("Location");
            String cookies = urlConnection.getHeaderField("Set-Cookie");

        }

        InputStream inputStream = urlConnection.getInputStream();
        StringBuffer buffer = new StringBuffer();
        reader = new BufferedReader(new InputStreamReader(inputStream, "UTF-8"));
        String line = null;
        while ((line = reader.readLine()) != null) {
            buffer.append(line);
        }
        resultJson = buffer.toString();

    } catch (Exception ex) {
        ex.printStackTrace();
    }

我的计算机浏览器的网络请求标头。我想我需要这个cookie字段,但我不知道在哪里找到它,因为那个laravel - 问题。我很新。伙计们,我在请你帮忙。

enter image description here

1 个答案:

答案 0 :(得分:1)

我不确定,因为我对你的后端脚本没有任何想法,但确实做了以下事情。

  1. 您在路线中使用 POST 。我怀疑您使用 GET ,因为您可以使用浏览器加载页面。例如,

    Route::post('UserAdd', 'Controller@UserAdd');
    
  2. 再次确认您在控制器/ PHP文件中没有任何错误。

  3. 如果您使用的是任何authController,请检查您是否拥有有效权限。

  4. 检查.htaccess文件。