2009-08-19 70 views
1

如何将文件发布到使用java的php(如html表单那样)?Java Post Post to PHP

+1

您是指JavaScript还是来自Java Servlet? – amischiefr 2009-08-19 14:37:19

+1

有很多是Java的东西,而不是Servelets。 – Quentin 2009-08-19 15:40:36

回答

4

如果您只是需要生成HTTP POST,请检查HttpClient,特别是PostMethod。既然你说的是HTTP,服务器上的实现技术(在你的情况下,PHP)并不重要。

有一个例子here

2

事实上,这是可以做到只使用在JDK中的类一个职位,但正如其他人指出,它可能会更容易使用像的HttpClient库。

除了HttpClient,您还可以查看由RESTful框架(如Restlet和Jersey)提供的客户端Java库。虽然主要是为了与Web服务交互而设计的,但它们提供了对GET和POST的几乎任何事情的非常高级的抽象。

代码没有经过测试,甚至编译(可能不编译),但是这是有点儿八九不离十会,如果你想推出自己的,你会怎么做:

URL url = new URL("http://hostname/foo.php"); 

URLConnection connection = url.openConnection(); 

connection.setDoInput(true); 
connection.setDoOutput(true); 

// ignoring possible encoding issues 
byte[] body = "param=value&param2=value2".getBytes(); 

connection.setRequestProperty("Content-type", "application/x-www-form-urlencoded"); 
connection.setRequestProperty("Content-length", String.valueOf(body.length)); 

// ignoring possible IOExceptions 
OutputStream out = connection.getOutputStream(); 
out.write(body); 
out.flush(); 

// use this to read back from server 
InputStream in = connection.getInputStream(); 

正如你所看到的,这是很低级别的东西。这就是为什么你想使用库。

+0

我设法张贴字符串,但如果我要发布一个文件是什么? – user 2009-08-19 17:52:17

+0

如果你想手动完成,你必须实现我相信的RFC 1867。 (http://tools.ietf.org/html/rfc1867),但严重的是,没有。 – 2009-08-19 18:46:56

+0

我只是想发布的文件。 (不是文本,例如二进制文件) – user 2009-09-01 12:12:24