0

我需要将一个非常小的 .xml 文件上传到 php 脚本。该脚本将解析文件,在地图上创建一些东西,然后应用程序将显示结果。

问题是,如果我必须上传带有 html 页面的文件,我创建一个表单,输入一个带有“name=userfile”的输入字段,然后服务器端我在 $_FILES['userfile'] 中找到它。

如何在安卓中做到这一点?with string 很简单 with

List<NameValuePair> nameValuePairs = new ArrayList<NameValuePair>(2);
    nameValuePairs.add("key", "value");

但现在?

这是我的代码客户端,但似乎没有文件到达服务器:

final String url = "http://www.blablabladasdasd/mysite/test.php";
    String selected = getIntent().getStringExtra("com.example.ghghgh.filename");
    final File file = new File("/storage/sdcard0/myFolder/"+selected + ".xml");
    Log.i("FILE SIZE: ", "" + file.length());

    final WebView mWebView = (WebView) findViewById(R.id.webview);
    mWebView.getSettings().setJavaScriptEnabled(true);
    mWebView.setScrollBarStyle(WebView.SCROLLBARS_OUTSIDE_OVERLAY);
    mWebView.getSettings().setSaveFormData(true);
    mWebView.setWebViewClient(new MyWebViewClient());



    Thread thread = new Thread()
    {
        public void run()
        {
            HttpClient client = new DefaultHttpClient();
            HttpPost post = new HttpPost(url);
            client.getParams().setParameter("userfile", file);

            try
            {
                HttpResponse response = client.execute(post);
                String res = EntityUtils.toString(response.getEntity());
                Log.i("RESPONSE: ", res);
                mWebView.loadData(res, "text/html", HTTP.UTF_8);

            }
            catch(ClientProtocolException e)
            {
                e.printStackTrace();
            }
            catch(IOException e)
            {
                e.printStackTrace();
            }
        }
    };
    thread.start();

    try
    {
        thread.join();
    }
    catch(InterruptedException e)
    {
        e.printStackTrace();
    }
4

1 回答 1

0

我不得不解决一个类似的问题,并在这里找到了我的答案:http: //blog.tacticalnuclearstrike.com/2010/01/using-multipartentity-in-android-applications/ 基本上,有了一些额外的 Apache 库,生活变得更轻松. 作为奖励,这里是如何做同样的事情,但通过安全 (SSL) 连接: Android 中的 Secure HTTP Post

您可能会误解 loadData 的文档,因为它需要“base64”或 URL 编码数据,否则。不是 XML 或 HTML。也许 loadURL 效果更好?

希望这可以帮助

于 2013-10-03T17:42:51.323 回答