2015-06-26 6 views
1

Я хочу вернуться myHighscores из Datastore: т.е .: Paul, 1200 Том, 1000 Кевин, 800GAE Чтение из Datastore

private void returnHighscores(HttpServletResponse resp, String game, int max) throws IOException { 
    DatastoreService datastore = DatastoreServiceFactory.getDatastoreService(); 
    Key gameKey = KeyFactory.createKey("game", game); 
    Query query = new Query("highscore", gameKey); 
    query.addSort("points", Query.SortDirection.DESCENDING); 
    List<Entity> highscores = datastore.prepare(query).asList(FetchOptions.Builder.withLimit(max)); 

    for(Entity e : highscores) { 
     resp.getWriter().println(e.getProperty("name") + "," + e.getProperty("points")); 
    } 
} 

и он работает :)! Но когда я хочу прочитать возвращаемые Рекорды и добавьте строку в TextView с:

AndroidHttpClient client = AndroidHttpClient.newInstance("Mueckenfang"); 
     HttpPost request = new HttpPost(HIGHSCORE_SERVER_BASE_URL + "?game=" + HIGHSCORESERVER_GAME_ID); 

     HttpResponse response = client.execute(request); 
     HttpEntity entity = response.getEntity(); 
     InputStreamReader reader = new InputStreamReader(entity.getContent(), "utf-8"); 
     int c = reader.read(); 
     while (c > 0) { 

      highscores += (char) c; 
      c = reader.read(); 
     } 
     TextView tv = (TextView) findViewById(R.id.highscoreTv); 
     tv.setText(highscores); 

Я только получить HTML-код, как:

><html><head><meta http-euiv="content-type"content="text/html;charset=utf-8"><title>405 GTTP method POST is....

Но я хочу что-то, как Павел, 1200 Том, 1000 Кевином 800 и так далее

ответ

1

HttpPost не принят параметр запроса, , как как "?game=" + HIGHSCORESERVER_GAME_ID.

вам нужно передать, что значения, как

AndroidHttpClient client = AndroidHttpClient.newInstance("Mueckenfang"); 
HttpPost request = new HttpPost(HIGHSCORE_SERVER_BASE_URL); 
List<NameValuePair> nameValuePairs = new ArrayList<NameValuePair>(1); 
nameValuePairs.add(new BasicNameValuePair("game", String.valueOf(HIGHSCORESERVER_GAME_ID)));  
request.setEntity(new UrlEncodedFormEntity(nameValuePairs)); 
HttpResponse response = client.execute(request); 
HttpEntity entity = response.getEntity(); 
+0

Thx за помощью, но вы могли бы написать мой метод так, как вы бы хотели? :) Я не знаю, куда вставить код ur! –

+0

см. Мой обновленный ответ –

+0

thx чувак его работает отлично сейчас! –

1

проблема - ваш обработчик appengine, поддерживающий только http 'GET' (я думаю, что вы переопределяете только doGet), но вы используете «POST» от клиента. Измените метод http на стороне клиента на «GET».

Смежные вопросы