[英]How to post data to HTTP server using Java
In my Java script I can list the My calendar events : 在我的Java脚本中,我可以列出“我的日历”事件:
String pageToken = null;
do {
Events events= null;
try {
events = service.events().list(CALENDAR_ID).setPageToken(pageToken).execute();
} catch (IOException ex) {
Logger.getLogger(CalendarService.class.getName()).log(Level.SEVERE, null, ex);
}
List<Event> items = events.getItems();
for (Event event : items) {
System.out.println(event.getSummary());
System.out.println(event.getStart());
}
pageToken = events.getNextPageToken();
} while (pageToken != null);
I wonder how I can send this information via http to a server? 我想知道如何通过http将这些信息发送到服务器吗? Thanks in advance!
提前致谢!
You need to use an HTTP client, such as Netty HTTP Client or Apache HTTP Components . 您需要使用HTTP客户端,例如Netty HTTP Client或Apache HTTP Components 。
This is an example taken from Apache HTTP Components : 这是取自Apache HTTP Components的示例 :
/**
* Elemental example for executing multiple POST requests sequentially.
*/
public class ElementalHttpPost {
public static void main(String[] args) throws Exception {
HttpProcessor httpproc = HttpProcessorBuilder.create()
.add(new RequestContent())
.add(new RequestTargetHost())
.add(new RequestConnControl())
.add(new RequestUserAgent("Test/1.1"))
.add(new RequestExpectContinue(true)).build();
HttpRequestExecutor httpexecutor = new HttpRequestExecutor();
HttpCoreContext coreContext = HttpCoreContext.create();
HttpHost host = new HttpHost("localhost", 8080);
coreContext.setTargetHost(host);
DefaultBHttpClientConnection conn = new DefaultBHttpClientConnection(8 * 1024);
ConnectionReuseStrategy connStrategy = DefaultConnectionReuseStrategy.INSTANCE;
try {
HttpEntity[] requestBodies = {
new StringEntity(
"This is the first test request",
ContentType.create("text/plain", Consts.UTF_8)),
new ByteArrayEntity(
"This is the second test request".getBytes(Consts.UTF_8),
ContentType.APPLICATION_OCTET_STREAM),
new InputStreamEntity(
new ByteArrayInputStream(
"This is the third test request (will be chunked)"
.getBytes(Consts.UTF_8)),
ContentType.APPLICATION_OCTET_STREAM)
};
for (int i = 0; i < requestBodies.length; i++) {
if (!conn.isOpen()) {
Socket socket = new Socket(host.getHostName(), host.getPort());
conn.bind(socket);
}
BasicHttpEntityEnclosingRequest request = new BasicHttpEntityEnclosingRequest("POST",
"/servlets-examples/servlet/RequestInfoExample");
request.setEntity(requestBodies[i]);
System.out.println(">> Request URI: " + request.getRequestLine().getUri());
httpexecutor.preProcess(request, httpproc, coreContext);
HttpResponse response = httpexecutor.execute(request, conn, coreContext);
httpexecutor.postProcess(response, httpproc, coreContext);
System.out.println("<< Response: " + response.getStatusLine());
System.out.println(EntityUtils.toString(response.getEntity()));
System.out.println("==============");
if (!connStrategy.keepAlive(response, coreContext)) {
conn.close();
} else {
System.out.println("Connection kept alive...");
}
}
} finally {
conn.close();
}
}
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.