使用Android应用程序将文件上传到我的Google API项目

时间:2013-05-29 22:40:16

标签: java android python google-app-engine

我需要一些帮助。 我一直在开发一款Android游戏,其中有关您的进度的一些信息被发送到服务器。你也需要记录你的声音,游戏将发送到我的谷歌服务器上的blobstore。

我设法使用Jsoup将表单上传到我的数据存储区。

我的问题是我一直试图以各种方式将内容上传到我所做的文件上传应用程序。没有成功。

这是我的Google APP代码(python)。它在我的浏览器上完美运行,它意味着将文件上传到我的blobstore。基本上它是一个http文件POST表格

import os
import urllib

from google.appengine.ext import blobstore
from google.appengine.ext import webapp
from google.appengine.ext.webapp import blobstore_handlers
from google.appengine.ext.webapp import template
from google.appengine.ext.webapp.util import run_wsgi_app

class MainHandler(webapp.RequestHandler):
    def get(self):
        upload_url = blobstore.create_upload_url('/upload')
        self.response.out.write('<html><body>')
        self.response.out.write('<form action="%s" method="POST" enctype="multipart/form-data">' % upload_url)
        self.response.out.write("""Upload File: <input type="file" name="file"><br> <input type="submit" name="submit" value="Submit"> </form></body></html>""")

class UploadHandler(blobstore_handlers.BlobstoreUploadHandler):
    def post(self):
        upload_files = self.get_uploads('file')
        blob_info = upload_files[0]
        self.response.out.write('success!')
        #self.redirect('/')


app= webapp.WSGIApplication(
          [('/', MainHandler),
           ('/upload', UploadHandler),
          ], debug=True)

这是我一直试图用来上传内容的代码。此代码在我的andorid手机上运行。

public static void sendF(File file)
{

    if (file.exists())
    {
        Log.e("msg", "exists");
    }
    else
    {
        Log.e("msg", "does not exists");
    }
    String url = "http://MYAPP.appspot.com/";
    HttpClient httpclient = AndroidHttpClient.newInstance("MyGame");



    HttpPost httpost = new HttpPost(url);
    MultipartEntity entity = new MultipartEntity();
    entity.addPart("file", new FileBody(file));
    httpost.setEntity(entity);
    HttpResponse response;
    try {
        response = httpclient.execute(httpost);
        Log.e("internet", EntityUtils.toString(response.getEntity()));
    } catch (ClientProtocolException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    } catch (IOException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    }
}

问题是:我一直得到这个

05-29 17:10:52.369: E/internet(1720):   <h1>405 Method Not Allowed</h1>
05-29 17:10:52.369: E/internet(1720):   The method POST is not allowed for this resource. <br /><br />

(虽然我可以在网络浏览器中使用它。有人可以帮助我吗?(对不起,如果我不清楚)

1 个答案:

答案 0 :(得分:1)

我发现JSoup有一个错误,它无法正确处理重定向。它不是将请求转移到GET,而是将其保留为POST。根据规范,这是无效的。