通过get请求将HTML文件作为响应而不是JSON对象接收

时间:2016-05-12 02:20:02

标签: android html json android-studio

我正在开发一个Android应用程序,用户登录到他/她的帐户。登录后,我将收到XSRF令牌和Laravel会话ID以识别特定用户。我必须为我发送给API的每个请求发送这些令牌以获取相应的信息。但是,当我发送图像中显示的所需详细信息时,我将HTMl文件作为响应而不是获取JSON对象。我严重陷入了这个问题。正确的解决方案可以推进整个应用程序。

 class RegisterConnection extends AsyncTask<String,String,JSONObject> {
    protected JSONObject doInBackground(String... arg0) {

        JSONObject output = new JSONObject();
        DefaultHttpClient client = new DefaultHttpClient();
        HttpConnectionParams.setConnectionTimeout(client.getParams(), 5000); //Timeout Limit
        HttpResponse response = null;

        try {
            HttpGet get = new HttpGet(statsURL);
            get.setHeader("Accept", "application/json");
            CookieStore store = new BasicCookieStore();
            BasicClientCookie cookie1 = new BasicClientCookie("XSRF-TOKEN", XSRF);
            BasicClientCookie cookie2 = new BasicClientCookie("laravel_session", laravel);
            store.addCookie(cookie1);
            store.addCookie(cookie2);
            client.setCookieStore(store);

            response = client.execute(get);



            if(response!=null){
                InputStream in = response.getEntity().getContent();
                String resultstring = Utilities.convertStreamToString(in);
                Log.i("Result1", resultstring);
                output = new JSONObject(resultstring);
                Log.i("Result2", output.toString());
            }
        } catch(Exception e) {
            e.printStackTrace();
            try {
                output.put("sai","error");
                Log.i("MainActivity", output.toString());
            } catch (JSONException e1) {
                e1.printStackTrace();
            }
            return output;
        }
        return output;
    }

这些是服务器要求

http://imgur.com/OY9Q673

这是收到的输出

http://imgur.com/IB5AEcT

2 个答案:

答案 0 :(得分:1)

据我所知,您的Android客户端代码没有任何问题。
您正在从服务器获取HTML,因此主要原因可能是您的Laravel服务器正在呈现视图并向您发回html而不是JSON。
您应该在Laravel服务器端发送JSON响应,而不是在服务器上呈现视图。

答案 1 :(得分:0)

在gradle文件中添加Jsoup依赖项 实现'org.jsoup:jsoup:1.11.2'

    public void onActivityResult(int requestCode, int resultCode, Intent data)
    {
         if (requestCode == PICK_IMAGE && resultCode == Activity.RESULT_OK) {
             if (data == null) {
                 //Display an error
                 return;
             }
                 InputStream inputStream = this.getContentResolver().openInputStream(data.getData());

     }

Jsoup教程 http://jsoup.org/apidocs/org/jsoup/Jsoup.html