2015-03-19 2 views
0

Im пытается узнать больше о webbbservices и python в одно и то же время. Итак, если у вас есть идеи или решения, объясните мне, как Im 5. :)android post json, app engine дает 404

Итак, я хочу отправить строку на сервер и просто сохранить ее в базе данных (гостевой книге). мне удалось сделать это с веб-страницы, но теперь я хочу, чтобы получить доступ и хранить строку по телефону, это код питона:

import os 
import urllib 
import json 

from google.appengine.ext import ndb 

import jinja2 
import webapp2 


JINJA_ENVIRONMENT = jinja2.Environment(
    loader=jinja2.FileSystemLoader(os.path.dirname(__file__)), 
    extensions=['jinja2.ext.autoescape'], 
    autoescape=True) 

DEFAULT_GUESTBOOK_NAME = 'default_guestbook' 
GUESTBOOKS_NAME = 'guestbook' 

def guestbook_key(guestbook_name=DEFAULT_GUESTBOOK_NAME): 
    return ndb.Key('Guestbook', guestbook_name) 


class Guestbook(ndb.Model): 
    identity = ndb.StringProperty(indexed=True 


class Chat(webapp2.RequestHandler): 
    def get(self): 

     guestbook = Guestbook(parent=guestbook_key(GUESTBOOKS_NAME)) 
     guestbook.identity=self.request.get("content") 
     guestbook.put() 
     self.response.headers['Content-Type'] = "text/plain" 
     self.response.out.write("ok") 

application = webapp2.WSGIApplication([ 
    (r'/chat', Chat), 
], debug=True) 

и это андроид код:

private void sendData(){ 

     try { 
      JSONObject jsonobj = new JSONObject(); 
      jsonobj.put("content", "asdf1234"); 

      DefaultHttpClient httpclient = new DefaultHttpClient(); 
      HttpPost httppostreq = new HttpPost("http://<myappid>.appspot.com/chat/"); 

      StringEntity se = new StringEntity(jsonobj.toString()); 

      se.setContentType("application/json;charset=UTF-8"); 
      se.setContentEncoding(new BasicHeader(HTTP.CONTENT_TYPE,"application/json;charset=UTF-8")); 

      httppostreq.setEntity(se); 

      HttpResponse httpresponse = httpclient.execute(httppostreq); 

      Log.d("Debug", "Response: " + EntityUtils.toString(httpresponse.getEntity())); 

     } catch (JSONException e) { 
      e.printStackTrace(); 
     } catch (UnsupportedEncodingException e) { 
      e.printStackTrace(); 
     } catch (ClientProtocolException e) { 
      e.printStackTrace(); 
     } catch (IOException e) { 
      e.printStackTrace(); 
     } catch (Exception e){ 
      Log.d("Debug", "Exception: " + e.getMessage()); 
     } 


    } 
+0

ваше регулярное выражение требует (+ один или более) цифр, которые передаются в чате URL – corn3lius

ответ

1

В вашей таблице маршрутизации: (r'/chat/(\d+)', Chat), эта строка отображает URL-адрес обработчика.

, который обрабатывается путем сопоставления (\d+) с номером product_id в функции получения обработчика.

действительные адреса

  • /чат/1
  • /чат/302490205

недействительные URLs

  • /чат
  • /чат/Jedi

редактировать

поскольку ваше размещение вашей нужен метод пост в обработчике

def post(self): 
    #do stuff 
+0

Так что, если я удалю d + Я получаю 405 вместо ...: S –

+1

Удалили ли вы продукт? – corn3lius

+0

Я обновил вопрос. В настоящее время проблема заключается в настройке «guestbook.identity = ???????» –

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