在Android中模拟HTML表单

时间:2014-08-31 13:22:02

标签: android html forms http request

我有一个HTML表单,我想模拟一个填写完所有框的请求。 在此先感谢:)

<form action="upload.php" method="post" enctype="multipart/form-data"> 
        <input type="file" name="datei"><br>
        <input type="password" name="password"></br>
        <input type="submit" value="Hochladen" name="upload"> 
</form>

这是我现在的Java代码,但我只能传输文件,而不是“密码”:

               FileInputStream fileInputStream = new FileInputStream(sourceFile);
               URL url = new URL("example.com/upload.php");

               conn = (HttpURLConnection) url.openConnection(); 
               conn.setDoInput(true);
               conn.setDoOutput(true);
               conn.setUseCaches(false);
               conn.setRequestMethod("POST");
               conn.setRequestProperty("ENCTYPE", "multipart/form-data");
               conn.setRequestProperty("Content-Type", "multipart/form-data;boundary=" + boundary);
               conn.setRequestProperty("datei", fileName);

               DataOutputStream dos = new DataOutputStream(conn.getOutputStream());

               dos.writeBytes(twoHyphens + boundary + lineEnd); 
               dos.writeBytes("Content-Disposition: form-data; name=\"datei\"; filename=\""
                                         + fileName + "\"" + lineEnd);

               dos.writeBytes(lineEnd);

               //...

               fileInputStream.close();
               dos.flush();
               dos.close();

1 个答案:

答案 0 :(得分:1)

使用multipart / form-data时,你应该传递多个bundle,每个变量一个。但是,这种将数据推送到您的请求的方法是不安全的,您应该使用MultipartEntity对象,看看这个:Multipart/form-data construction with android

对于multipart / form-data参考,请参阅:http://www.w3.org/TR/html401/interact/forms.html#h-17.13.4.2

请记住,您还可以使用“application / x-www-form-urlencoded”enctype在一个正文中发布多个变量,这是html表单的默认值。