我在html下面使用我的服务器api(其余)
<html>
<body>
<form method="post" action="http://localhost:8080/service/uploadFile" enctype="multipart/form-data">
<input type="file" name="file"/>
<input type="submit"/>
<input type="hidden" name="smallSize" value="50x50">
</form>
</body>
</html>
如何使用java方法调用此api?
答案 0 :(得分:4)
可能以下行可以帮到你。我正在使用Apache Http api。
HttpClient client = new DefaultHttpClient();
client.getParams().setParameter(CoreProtocolPNames.PROTOCOL_VERSION, HttpVersion.HTTP_1_1);
HttpPost post = new HttpPost( "http://localhost:8080/service/uploadFile"));
MultipartEntity entity = new MultipartEntity( HttpMultipartMode.BROWSER_COMPATIBLE );
StringBody size= new StringBody("50x50");
entity.addPart("smallSize", size);
entity.addPart("file", new FileBody(new File("D:/abc.txt") ));
post.setEntity(entity);
HttpResponse response = client.execute(post);
String responseFromServer = EntityUtils.toString(response.getEntity(), "UTF-8" );
client.getConnectionManager().shutdown();
System.out.println("response from server: "+responseFromServer);
根据您的请求类型,HttpPost
和HttpGet
类可用。对于发送文件,我们需要使用MultipartEntity
类。如果您想像其他元数据一样发送其他表单字段和FileBody
,则可以使用StringBody
。
我希望这可以帮到你一点点。 :)
答案 1 :(得分:0)
您可以使用套接字使用端口80上该表单的地址来模拟POST请求
String data = URLEncoder.encode("key1", "UTF-8") + "=" + URLEncoder.encode("value1", "UTF-8");
Socket socket = new Socket("127.0.0.1", 80);
String path = "/servlet";
BufferedWriter wr = new BufferedWriter(new OutputStreamWriter(socket.getOutputStream(), "UTF8"));
wr.write("POST " + path + " HTTP/1.0\r\n");
wr.write("Content-Length: " + data.length() + "\r\n");
wr.write("Content-Type: application/x-www-form-urlencoded\r\n");
wr.write("\r\n");
wr.write(data);
wr.flush();
BufferedReader rd = new BufferedReader(new InputStreamReader(socket.getInputStream()));
String line;
while ((line = rd.readLine()) != null) {
System.out.println(line);
}
wr.close();
rd.close();
取自HERE
的示例