Httpget удаляет параметры - PullRequest
0 голосов
/ 15 марта 2012

Я хочу проанализировать мои сериализованные данные JSON с веб-сайта: http://demos.brianbuikema.com/apps/soa_services/employees?format=JSON, но мой результат, который я получаю, - это исходный код с сайта: http://demos.brianbuikema.com/apps/soa_services/employees? Так что где-то мои параметры форматаудалять.но я понятия не имею, как en, где

это мой код, не обращайте внимания на log.d, это только для меня, когда я отлаживаю отладку.`

HttpClient httpclient = new DefaultHttpClient();

    // Prepare a request object


    HttpGet httpget = new HttpGet("http://demos.brianbuikema.com/apps/soa_services/employees?format=JSON");

    String result = null;
    try {
        // execute the request
        Log.d("buh", "2aa");
        HttpResponse response = httpclient.execute(httpget);
                            Log.d("buh", "2a");
        // Get hold of the response entity
        HttpEntity entity = response.getEntity();
        // If the response does not enclose an entity, there is no need
        // to worry about connection release
        Log.d("buh", "2b");
        if (entity != null) {
            // A Simple Response Read
            Log.d("buh", "2c");
            InputStream instream = entity.getContent();
            result = convertStreamToString(instream);
            Log.d("buh",result);
            // Closing the input stream will trigger connection release
            instream.close();
        }
    } catch (ClientProtocolException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    } catch (IOException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    }

    return result;
}

private static String convertStreamToString(InputStream is) {
    /*
     * To convert the InputStream to String we use the
     * BufferedReader.readLine() method. We iterate until the BufferedReader
     * return null which means there's no more data to read. Each line will
     * appended to a StringBuilder and returned as String.
     */
    BufferedReader reader = new BufferedReader(new InputStreamReader(is),
            8192);
    StringBuilder sb = new StringBuilder();

    String line = null;
    try {
        while ((line = reader.readLine()) != null) {
            sb.append(line + "\n");
        }
    } catch (IOException e) {
        e.printStackTrace();
    } finally {
        try {
            is.close();
        } catch (IOException e) {
            e.printStackTrace();
        }
    }

    return sb.toString();
}  `

Ответы [ 2 ]

1 голос
/ 16 марта 2012

Ошибка была с сервера, при запросе этого URL он удаляет заголовок JSON, поэтому нужно добавить: httpget.addHeader(new BasicHeader("Accept", "application/json")); под HttpGet

вот полный код:

 HttpClient httpclient = new DefaultHttpClient();

    // Prepare a request object
    HttpGet httpget = new HttpGet(url);
    httpget.addHeader(new BasicHeader("Accept", "application/json"));
    //httpget.getParams().setParameter("format", "JSON");

    Log.d("z",httpget.getURI().toString());

    // Execute the request
    HttpResponse response;

    String result = null;
    try {
        response = httpclient.execute(httpget);

        // Get hold of the response entity
        HttpEntity entity = response.getEntity();
        // If the response does not enclose an entity, there is no need
        // to worry about connection release

        if (entity != null) {
            // A Simple Response Read
            InputStream instream = entity.getContent();
            result = convertStreamToString(instream);
            Log.d("z",result);
            // Closing the input stream will trigger connection release
            instream.close();
        }
    } catch (ClientProtocolException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    } catch (IOException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    }

    return result;
}

private static String convertStreamToString(InputStream is) {
    /*
    * To convert the InputStream to String we use the BufferedReader.readLine()
    * method. We iterate until the BufferedReader return null which means
    * there's no more data to read. Each line will appended to a StringBuilder
    * and returned as String.
    */
    BufferedReader reader = new BufferedReader(new InputStreamReader(is), 8192);
    StringBuilder sb = new StringBuilder();

    String line = null;
    try {
        while ((line = reader.readLine()) != null) {
            sb.append(line + "\n");
        }
    } catch (IOException e) {
        e.printStackTrace();
    } finally {
        try {
            is.close();
        } catch (IOException e) {
            e.printStackTrace();
        }
    }

    return sb.toString();
}
0 голосов
/ 15 марта 2012

Вам необходимо установить пару имя-значение. . следовать этому ..

protected String doInBackground(String... params) {
        String result = "";
        ArrayList<NameValuePair> nameValuePairs = new ArrayList<NameValuePair>();
// REPLACE param [0] or one with your value of variable like _userid or etc..
        nameValuePairs.add(new BasicNameValuePair("userid",params[0]));

        try {
                HttpClient httpclient = new DefaultHttpClient();
                HttpPost httppost = new HttpPost("http://thisismywebsite.com/mypage.php");
                httppost.setEntity(new UrlEncodedFormEntity(nameValuePairs));
                HttpResponse response = httpclient.execute(httppost);
                HttpEntity entity = response.getEntity();
                is = entity.getContent();
        } catch(Exception e){
                Log.e("log_tag", "Error in http connection "+e.toString());
        }

        try {
                BufferedReader reader = new BufferedReader(new InputStreamReader(is,"iso-8859-1"),8);
                StringBuilder sb = new StringBuilder();
                String line = null;
                while ((line = reader.readLine()) != null) {
                        sb.append(line + "\n");
                }
                is.close();     
                result=sb.toString().trim();                
        } catch(Exception e){
                Log.e("log_tag", "Error converting result "+e.toString());
        }

        return result;
    }

Надеюсь, у вас все будет хорошо.

...