• 使用 java.net


    使用 java.net - Google App Engine - Google 代码

    使用 java.net

    您可以使用 Java 标准库中的 java.net.URLConnection,通过 Java 应用程序创建 HTTP 和 HTTPS 连接。App Engine 使用网址提取服务实现该接口。

    有关 java.net 的详细信息,请参阅 Sun 的 java.net.URLConnection 文档

    对于网址的简单请求

    获取某网址的页面内容的一种简单方法是创建 java.net.URL 对象,然后调用其 openStream() 方法。该方法可处理创建连接、发出 HTTP GET 请求以及检索响应数据的详情。

    import java.net.MalformedURLException;
    import java.net.URL;
    import java.io.BufferedReader;
    import java.io.InputStreamReader;
    import java.io.IOException;
    
    // ...
            try {
                URL url = new URL("http://www.example.com/atom.xml");
                BufferedReader reader = new BufferedReader(new InputStreamReader(url.openStream()));
                String line;
    
                while ((line = reader.readLine()) != null) {
                    // ...
                }
                reader.close();
    
            } catch (MalformedURLException e) {
                // ...
            } catch (IOException e) {
                // ...
            }

    使用 HttpURLConnection

    对于更复杂的请求,您可以调用网址对象的 openConnection() 方法以获取 URLConnection 对象。在发出请求之前,您可以用更多信息准备此对象。要进行请求,请调用 URLConnection 上的方法,如 getInputStream()getOutputStream()

    App Engine 的 URLConnection 实现不会与远程主机保持永久连接。当应用程序设置请求数据或写入输出流时,请求数据保存在内存中。当应用程序访问有关响应的任何数据时,如获得输入流(或调用 connect() 方法),App Engine 通过请求数据调用网址提取服务,获得响应,关闭连接并返回响应数据。

    以下示例通过某些表单数据对网址发出 HTTP POST 请求。

    import java.net.HttpURLConnection;
    import java.net.MalformedURLException;
    import java.net.URL;
    import java.net.URLEncoder;
    import java.io.BufferedReader;
    import java.io.InputStreamReader;
    import java.io.IOException;
    import java.io.OutputStreamWriter;
    
    // ...
            String message = URLEncoder.encode("my message", "UTF-8");
    
            try {
                URL url = new URL("http://www.example.com/comment");
                HttpURLConnection connection = (HttpURLConnection) url.openConnection();
                connection.setDoOutput(true);
                connection.setRequestMethod("POST");
    
                OutputStreamWriter writer = new OutputStreamWriter(connection.getOutputStream());
                writer.write("message=" + message);
                writer.close();
        
                if (connection.getResponseCode() == HttpURLConnection.HTTP_OK) {
                    // OK
                } else {
                    // Server returned HTTP error code.
                }
            } catch (MalformedURLException e) {
                // ...
            } catch (IOException e) {
                // ...
            }

    设置请求标头

    要在传出请求上设置 HTTP 标头,请调用 HttpURLConnection 的 setRequestProperty() 方法。

            connection.setRequestProperty("X-MyApp-Version", "2.7.3");

    重定向

    默认情况下,HttpURLConnection 将遵循 HTTP 重定向。网址提取服务将遵循最多 5 个重定向。

    要停用以下重定向,请调用 HttpURLConnection 的 setInstanceFollowRedirects() 方法。

            connection.setInstanceFollowRedirects(false);

    不支持的 java.net 功能

    网址提取服务不支持永久 HTTP 连接。当应用程序使用 URLConnection 对象访问响应数据时,App Engine 调用网址提取服务来完成请求。在访问了响应数据之后,无法修改请求数据。

    应用程序无法为请求设置显式连接超时。

    低级 API 的功能

    网址提取服务限制了传出请求和传入响应的数据大小。使用 java.net API 时,将在不进行提示的情况下截断大于该限制的数据。通过低级网址提取 API,可指定是否在不进行提示的情况下进行截断,或者在超出限制的情况下是否引发异常。

  • 相关阅读:
    IEnumerable和IQueryable的区别
    最全的ASP.NET MVC路由配置,以后RouteConfig再弄不懂去吃翔
    JSON遍历方法
    将Sublime Text 2搭建成一个好用的IDE
    Linux入门教程
    apache如何配置默认的根目录
    Web移动端Fixed布局的解决方案
    node-创建模块
    关于文字内容溢出用点点点(…)省略号表示
    JavaScript设计模式与开发实践 | this、call和apply
  • 原文地址:https://www.cnblogs.com/lexus/p/2400926.html
Copyright © 2020-2023  润新知