0

我需要一些帮助。我一直在开发一个 android 游戏,其中有关您的进度的一些信息被发送到服务器。此外,您需要录制您的声音,游戏将发送到我的谷歌服务器上的我们的 blobstore。

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

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

这是我的谷歌应用程序代码(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)

这是我一直试图用来上传东西的代码。这段代码在我的安卓手机上运行。

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 />

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

4

1 回答 1

1

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

于 2013-07-27T10:46:15.033 回答