Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/http/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何使用Java将数据发布到HTTP服务器_Java_Http_Google Calendar Api - Fatal编程技术网

如何使用Java将数据发布到HTTP服务器

如何使用Java将数据发布到HTTP服务器,java,http,google-calendar-api,Java,Http,Google Calendar Api,在我的Java脚本中,我可以列出我的日历事件: String pageToken = null; do { Events events= null; try { events = service.events().list(CALENDAR_ID).setPageToken(pageToken).execute(); } catch (IOException ex) { Logger.getLogger(CalendarService.cl

在我的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);
String pageToken=null;
做{
Events=null;
试一试{
events=service.events().list(CALENDAR_ID).setPageToken(pageToken).execute();
}捕获(IOEX异常){
Logger.getLogger(CalendarService.class.getName()).log(Level.SEVERE,null,ex);
}
List items=events.getItems();
用于(事件:项目){
System.out.println(event.getSummary());
System.out.println(event.getStart());
}
pageToken=events.getNextPageToken();
}while(pageToken!=null);

我想知道如何通过http将这些信息发送到服务器?提前谢谢

您需要使用HTTP客户端,例如或

这是一个:

/**
*按顺序执行多个POST请求的基本示例。
*/
公共类ElementalHttpPost{
公共静态void main(字符串[]args)引发异常{
HttpProcessor httpproc=HttpProcessorBuilder.create()
.add(新请求内容())
.add(新的RequestTargetHost())
.add(新的RequestConnControl())
.add(新的RequestUserAgent(“测试/1.1”))
.add(new RequestExpectContinue(true)).build();
HttpRequestExecutor httpexecutor=新的HttpRequestExecutor();
HttpCoreContext coreContext=HttpCoreContext.create();
HttpHost主机=新的HttpHost(“本地主机”,8080);
coreContext.setTargetHost(主机);
DefaultBHttpClientConnection conn=新的DefaultBHttpClientConnection(8*1024);
ConnectionReuseStragey connStrategy=DefaultConnectionReuseStragey.INSTANCE;
试一试{
HttpEntity[]请求主体={
新StringEntity(
“这是第一个测试请求”,
ContentType.create(“text/plain”,Consts.UTF_8)),
新ByteArrayEntity(
“这是第二个测试请求”。getBytes(Consts.UTF_8),
ContentType.APPLICATION_八位组_流),
新输入流(
新ByteArrayInputStream(
“这是第三个测试请求(将分块)”
.getBytes(Consts.UTF_8)),
ContentType.APPLICATION(八位字节流)
};
for(int i=0;i>请求URI:”+Request.getRequestLine().getUri());
预处理(请求、httpproc、coreContext);
HttpResponse response=httpexecutor.execute(请求、连接、核心上下文);
后处理(响应、httpproc、coreContext);

System.out.println(“如果您想向服务器发送数据,最好问另一个问题,例如:“如何使用Java将数据发布到HTTP服务器”。您遇到的问题不一定与google callendar本身有关。@Jaap,但数据的格式(和内容类型)(如果有!)服务器接受的内容因服务器而异,因此服务器确实很重要。它是否使用POST、PUT、GET和/或其他内容也很重要。您也可以使用Java的内置
URLConnection
,URL为scheme http:或https:。但您的示例只连接和接收数据,而不发送数据,这就是问题所在。@dave_thompson_085是的,您可以使用脆弱的
HttpURLConnection
机制,但是您将缺少超时、重试、连接池等。无论如何,我将编辑我的答案,以便它显示一个POST示例。感谢您指出这一点。
/**
 * 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();
        }
    }

}