【问题标题】:Android app uploading data to a python server via postAndroid 应用通过 post 将数据上传到 python 服务器
【发布时间】:2010-02-25 05:33:11
【问题描述】:

我已经成功地在谷歌应用引擎上实现了从 android 到 java httpservlet,但我想用 python 代替服务器端。我是 python 新手。有人做过吗?我已经启动并运行了留言簿示例,但我似乎无法将帖子从我的 android 应用程序发送到服务器。

我还想向客户端发出一个字符串响应,例如“成功”。

我们将不胜感激。

谢谢

***客户端java:

URL url = new URL(Const.SERVER_NAME);
URLConnection connection = url.openConnection();
connection.setDoOutput(true);
OutputStreamWriter out = new OutputStreamWriter(
    connection.getOutputStream()
);
out.write("content=12345");
out.close();

***服务器端 Python:

class Upload(webapp.RequestHandler):
    def post(self):
        greeting.content = self.request.get('content') 
        greeting.put()

***服务器端 Java(工作)

public void doPost(HttpServletRequest request, HttpServletResponse response) 
    throws ServletException, IOException
{

    try {
        String instring = request.getParameter("content")

        // set the response code and write the response data
        response.setStatus(HttpServletResponse.SC_OK);
        OutputStreamWriter writer = new OutputStreamWriter(response.getOutputStream());

        writer.write("Success");
        writer.flush();
        writer.close();
    } catch (IOException e) {
        try{
            response.setStatus(HttpServletResponse.SC_BAD_REQUEST);
            response.getWriter().print(e.getMessage());
            response.getWriter().close();
        } catch (IOException ioe) {
        }
    } 

【问题讨论】:

  • 非工作 Python 代码与工作 Java 代码的总结是什么?很难提供帮助,因为在 Python 中接受 HTTP POST 请求至少与在 Java 中一样容易,而不会看到您在尝试的实现中可能插入了哪些错误!
  • 您遇到了什么错误或失败?
  • 服务器端什么都没有发生,没有错误。客户端运行无一例外。我想我会坚持使用 java 服务器端进行数据上传,并使用 python 为 web 做所有事情。

标签: java python http google-app-engine post


【解决方案1】:

我知道已经很久了。但我确实解决了这个问题,所以我会发布解决方案。

安卓代码:

        url = new URL(SERVER_URL);
        URLConnection connection = url.openConnection();
        connection.setDoOutput(true);

        OutputStreamWriter out = new OutputStreamWriter(
                                  connection.getOutputStream());

        String post_string;
        post_string = "deviceID="+tm.getDeviceId().toString();

        // send post string to server
        out.write(post_string);
        out.close();

        //grab a return string from server
        BufferedReader in = new BufferedReader(
                    new InputStreamReader(
                    connection.getInputStream()));

        Toast.makeText(context, in.readLine(), Toast.LENGTH_SHORT).show();

这里是 python 服务器端,使用 Django 和 GAE:

def upload(request):
    if request.method == 'POST':
        deviceID = measurement.deviceID = str(request.POST['deviceID'])
        return HttpResponse('Success!')
    else:
        return HttpResponse('Invalid Data')

【讨论】:

    猜你喜欢
    • 2020-11-07
    • 1970-01-01
    • 1970-01-01
    • 2017-06-09
    • 2014-06-04
    • 2014-03-07
    • 2011-10-18
    • 1970-01-01
    • 2016-10-22
    相关资源
    最近更新 更多