我需要将一个非常小的.xml文件上传到php脚本。 此脚本将解析文件,在地图上创建一些内容,然后应用程序将显示结果。
问题是,如果我必须上传一个带有html页面的文件,我创建一个表单,输入一个带有“name = userfile”的输入字段,然后服务器端我在$ _FILES ['userfile']中找到它
如何在android中执行此操作?
用字符串非常简单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();
}
答案 0 :(得分:0)
我必须解决类似问题,并在此处找到我的答案: http://blog.tacticalnuclearstrike.com/2010/01/using-multipartentity-in-android-applications/ 基本上,使用一些额外的Apache库可以简化生活。作为奖励,这里是如何做同样的事情,但通过安全(SSL)连接: Secure HTTP Post in Android
您可能会错误解释loadData的文档,因为它需要“base64”或URL编码数据,否则。不是XML或HTML。也许loadURL效果更好?
希望这有帮助