0

我有一个安卓设备。我想在我的应用程序中填写一个带有编辑文本等的表单(其中一个字段将采用 SDCard 上图像的路径)。我希望这些表单内容成为需要上传此文件(来自 SD 卡)的外部网站中 HTML 表单的数据。HTML 表单有一个上传按钮。我不想向我的 android 应用程序用户展示这个 HTML 网页。有没有办法做到这一点?请告诉我!谢谢!

编辑:我浏览了很多网站,我知道我应该使用 HttpPost。不过我有一些疑问: 1. 您在 HttpPost 中使用的 url 是什么 - 它是包含表单的 url,还是表单重定向到的 url。2.在多方中,addPart的第一个参数是什么?是赋予字段的 ID 还是名称?3. HttpPost 怎么知道它应该去哪个表单?

4

1 回答 1

0

那么,您需要制作一个 MultiPart Http Post。您可以使用此示例:

HttpClient httpClient = new DefaultHttpClient();
HttpPost postRequest = new HttpPost("target_link");
MultipartEntity reqEntity = new MultipartEntity(HttpMultipartMode.BROWSER_COMPATIBLE);
reqEntity.addPart("data1", new StringBody("Data1"));
reqEntity.addPart("data2", new StringBody("Data2"));
reqEntity.addPart("data3",new StringBody("Data3"));
try{
    ByteArrayOutputStream bos = new ByteArrayOutputStream();
    bitmap.compress(CompressFormat.JPEG, 80, bos);
    byte[] data = bos.toByteArray();
    ByteArrayBody bab = new ByteArrayBody(data, "forest.jpg");
    reqEntity.addPart("picture", bab);
}
catch(Exception e){
    //Log.v("Exception in Image", ""+e);
    reqEntity.addPart("picture", new StringBody(""));
}
postRequest.setEntity(reqEntity);       
HttpResponse response = httpClient.execute(postRequest);
BufferedReader reader = new BufferedReader(new InputStreamReader(response.getEntity().getContent(), "UTF-8"));
String sResponse;
StringBuilder s = new StringBuilder();
while ((sResponse = reader.readLine()) != null) {
    s = s.append(sResponse);
}

就个人而言,我更喜欢使用 Spring for Android,因为它更易于配置。这是一个包含多部分Http Post 的链接。

祝你好运!

于 2013-06-14T06:30:52.220 回答